SQL 기초

오늘의 쿼리 04 | LIMIT으로 결과 개수 제한하기

Sallagudia 2026. 10. 27. 08:00

어제는 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을 살펴보겠습니다.

반응형