MySQL에서 테이블의 하위(bottom) n개 레코드를 조회하고 싶다면 ORDER BY 절과 LIMIT 절을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable724 (Value int); Query OK, 0 rows affected (0.79 sec)
2. 레코드 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable724 values(101); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable724 values(183); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable724 values(983); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable724 values(234); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable724 values(755); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable724 values(435); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable724 values(675); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable724 values(345); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable724 values(948); Query OK, 1 row affected (0.14 sec)
3. 전체 레코드 확인하기
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable724;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------+ | Value | +-------+ | 101 | | 183 | | 983 | | 234 | | 755 | | 435 | | 675 | | 345 | | 948 | +-------+ 9 rows in set (0.00 sec)
4. 하위 n개 레코드 선택하기
하위 n개의 레코드를 선택하는 핵심 쿼리는 다음과 같습니다. 여기서는 값을 기준으로 내림차순(DESC) 정렬한 후 LIMIT으로 상위 4개만 가져오도록 했습니다. 이렇게 하면 원래 데이터에서 마지막 4개의 레코드, 즉 가장 작은 값들을 순서대로 얻을 수 있습니다.
mysql> select *from DemoTable724 order by Value DESC LIMIT 0,4;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | 983 | | 948 | | 755 | | 675 | +-------+ 4 rows in set (0.00 sec)
정리
ORDER BY 컬럼명 DESC LIMIT 시작_인덱스, 개수 형태로 쿼리를 작성하면 손쉽게 하위 n개 레코드를 조회할 수 있습니다. LIMIT의 첫 번째 인자는 건너뛸 행 수(offset), 두 번째 인자는 가져올 행 수를 의미하므로, 필요에 따라 offset 값을 조절하여 원하는 범위의 데이터를 자유롭게 추출할 수 있습니다.