기본 패턴
text
SELECT DISTINCT category AS kind
FROM products
ORDER BY kind
LIMIT 10
OFFSET 20;설명
DISTINCT는 같은 값이 반복될 때 중복을 제거해 한 번만 보여 줍니다.AS는 결과 열 이름에 별칭을 붙여, 원래 열 이름보다 읽기 쉬운 출력 형식을 만들 때 자주 씁니다.LIMIT는 가져올 행 수의 상한을 정하고,OFFSET은 앞부분 몇 행을 건너뛸지 지정합니다.- 이 조합은 목록 화면, 페이지네이션, 요약 목록처럼 "많은 결과 중 일부만 보기"에 자주 쓰입니다.
- 다만
LIMIT와OFFSET만 쓰고 정렬 기준이 없으면, 매 실행마다 결과 순서가 달라질 수 있으므로ORDER BY를 함께 적는 편이 안전합니다.
짧은 예제
text
SELECT id, title AS post_title
FROM posts
WHERE published = true
ORDER BY created_at DESC
LIMIT 5
OFFSET 10;빠른 정리
| 문법 | 역할 |
|---|---|
DISTINCT | 중복 행 제거 |
AS name | 결과 열 이름 바꾸기 |
LIMIT n | 최대 n행만 가져오기 |
OFFSET n | 앞의 n행 건너뛰기 |
주의할 점
OFFSET 기반 페이지네이션은 페이지가 깊어질수록 느려질 수 있습니다. 데이터가 아주 많다면
created_at < 마지막값 같은 조건 기반 페이지네이션도 함께 고려하는 편이 좋습니다.
참고 링크
2 sources