어제는 ORDER BY로 결과를 정렬했습니다. 오늘은 정렬된 목록에서 필요한 만큼만 가져오는 LIMIT을 알아봅니다. 예를 들어 가장 저렴한 상품 3개를 보여줄 때 유용합니다.
예제 데이터
아래 예제는 PostgreSQL 기준입니다. WITH와 VALUES로 데이터를 쿼리 안에 만들기 때문에 테이블 생성 없이 그대로 실행할 수 있습니다.
| product_id | product_name | price |
| 1 | 노트 | 3000 |
| 2 | 펜 | 1000 |
| 3 | 지우개 | 1000 |
| 4 | 가방 | 20000 |
| 5 | 파일 | 5000 |
오늘의 쿼리
WITH products (product_id, product_name, price) AS (
VALUES
(1, '노트', 3000),
(2, '펜', 1000),
(3, '지우개', 1000),
(4, '가방', 20000),
(5, '파일', 5000)
)
SELECT product_id, product_name, price
FROM products
ORDER BY price ASC, product_id ASC
LIMIT 3;
ORDER BY price ASC로 저렴한 상품부터 정렬하고, 가격이 같으면 product_id 순으로 정합니다. 마지막의 LIMIT 3은 정렬된 결과에서 최대 3행만 반환합니다.
예상 결과
| product_id | product_name | price |
| 2 | 펜 | 1000 |
| 3 | 지우개 | 1000 |
| 1 | 노트 | 3000 |
실무에서 주의할 점
LIMIT만 쓰고 ORDER BY를 생략하면 어떤 행이 선택될지 보장되지 않습니다. 특히 가격처럼 중복될 수 있는 값으로 정렬할 때는 고유한 상품 번호를 두 번째 기준으로 넣어 순서를 안정적으로 만드세요. 또한 조건에 맞는 행이 3개보다 적으면 결과도 그보다 적게 나옵니다.
참고: PostgreSQL 공식 문서 — LIMIT과 OFFSET
다음 글에서는 결과를 건너뛰는 OFFSET을 살펴보겠습니다.
반응형
'SQL 기초' 카테고리의 다른 글
| 오늘의 쿼리 06 | DISTINCT로 중복 값 없이 조회하기 (0) | 2026.10.29 |
|---|---|
| 오늘의 쿼리 05 | OFFSET으로 앞의 행 건너뛰기 (0) | 2026.10.28 |
| 오늘의 쿼리 03 | ORDER BY로 조회 결과 정렬하기 (0) | 2026.10.26 |
| 오늘의 쿼리 02 | WHERE로 원하는 행만 골라보기 (0) | 2026.10.25 |
| 오늘의 쿼리 01 | SELECT로 원하는 데이터 조회하기 (0) | 2026.10.24 |