MySQL에서 최소한 지정된 개수(x개)의 행을 조회하려면 LIMIT 절을 사용해야 합니다. LIMIT 절은 반환할 행의 개수를 제한하여 원하는 만큼의 데이터만 효율적으로 가져올 수 있게 해줍니다.
기본 문법
select * from yourTableName order by yourColumnName DESC limit yourXNumberOfRows;
예제 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable (
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(100)
);
Query OK, 0 rows affected (0.76 sec)데이터 삽입
insert 명령어를 사용하여 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(EmployeeName) values('Chris');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(EmployeeName) values('David');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(EmployeeName) values('Bob');
Query OK, 1 row affected (0.51 sec)
mysql> insert into DemoTable(EmployeeName) values('Robert');
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable(EmployeeName) values('Mike');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(EmployeeName) values('Sam');
Query OK, 1 row affected (0.13 sec)전체 레코드 확인
select 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1 | Chris | | 2 | David | | 3 | Bob | | 4 | Robert | | 5 | Mike | | 6 | Sam | +------------+--------------+ 6 rows in set (0.00 sec)
LIMIT 절로 특정 개수의 행만 조회하기
다음은 MySQL에서 최소 x개의 행을 조회하는 쿼리입니다. 여기서는 직원 이름을 내림차순으로 정렬하고, 오직 2개의 행만 화면에 표시합니다.
mysql> select *from DemoTable order by EmployeeName DESC limit 2;
실행 결과는 아래와 같습니다.
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 6 | Sam | | 4 | Robert | +------------+--------------+ 2 rows in set (0.02 sec)
정리
이처럼 ORDER BY와 LIMIT를 함께 사용하면 정렬 기준에 따라 원하는 개수의 행만 간단하게 조회할 수 있습니다. LIMIT 뒤에 오는 숫자가 곧 반환받고자 하는 최대 행 수이며, 대량의 데이터에서 필요한 부분만 추출할 때 매우 유용하게 활용됩니다.