Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에는 SELECT TOP이 없나요? LIMIT으로 상위 레코드 선택하는 방법

MySQL에는 SELECT TOP 개념이 없습니다

SQL Server에서 자주 사용되는 SELECT TOP 구문은 MySQL에서 지원되지 않습니다. 하지만 걱정할 필요가 없습니다. MySQL에서는 LIMIT 절을 사용하면 동일한 결과를 손쉽게 얻을 수 있습니다.

예를 들어 SQL Server에서 상위 2개의 레코드를 조회할 때 TOP 2를 사용한다면, MySQL에서는 LIMIT 2로 같은 작업을 수행합니다.

기본 문법

SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 2;

특정 컬럼을 기준으로 내림차순 정렬한 후, 상위 2개의 레코드만 반환하는 기본적인 형태입니다.

예제 테이블 생성하기

실제 동작을 이해하기 위해 간단한 테이블을 만들어 보겠습니다. 아래 쿼리로 Top2Demo라는 이름의 테이블을 생성합니다.

mysql> create table Top2Demo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(20),
    -> Age int
    -> );
Query OK, 0 rows affected (0.91 sec)

샘플 데이터 삽입하기

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into Top2Demo(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into Top2Demo(Name,Age) values('Bob',21);
Query OK, 1 row affected (0.10 sec)
mysql> insert into Top2Demo(Name,Age) values('Sam',19);
Query OK, 1 row affected (0.14 sec)
mysql> insert into Top2Demo(Name,Age) values('David',25);
Query OK, 1 row affected (0.15 sec)
mysql> insert into Top2Demo(Name,Age) values('Carol',22);
Query OK, 1 row affected (0.39 sec)

전체 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select *from Top2Demo;

실행 결과는 다음과 같습니다.

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | Larry |   23 |
|  2 | Bob   |   21 |
|  3 | Sam   |   19 |
|  4 | David |   25 |
|  5 | Carol |   22 |
+----+-------+------+
5 rows in set (0.00 sec)

LIMIT으로 상위 2개 레코드 조회하기

이제 ORDER BY Age DESC로 나이를 내림차순 정렬하고, LIMIT 2를 적용해 나이가 가장 많은 상위 2명의 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM Top2Demo ORDER BY Age DESC LIMIT 2;

실행 결과는 다음과 같습니다.

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  4 | David |   25 |
|  1 | Larry |   23 |
+----+-------+------+
2 rows in set (0.00 sec)

정리

MySQL에서는 SELECT TOP 대신 LIMIT 절을 사용하여 반환되는 레코드 수를 제한할 수 있습니다. ORDER BY와 함께 사용하면 특정 컬럼 기준으로 정렬된 상위 N개의 데이터를 간편하게 조회할 수 있습니다.