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개의 데이터를 간편하게 조회할 수 있습니다.