메인 콘텐츠로 건너뛰기
OFFSETFETCH를 사용하면 데이터를 나누어 가져올 수 있습니다. 단일 쿼리로 가져올 행 블록을 지정합니다.
-- SQL 표준 스타일:
[OFFSET offset_row_count {ROW | ROWS}] [FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}]

-- MySQL/PostgreSQL 스타일:
[LIMIT [n, ]m] [OFFSET offset_row_count]
offset_row_count 또는 fetch_row_count 값은 숫자 또는 리터럴 상수일 수 있습니다. fetch_row_count는 생략할 수 있으며, 기본값은 1입니다. OFFSET은 쿼리 결과 집합에서 행 반환을 시작하기 전에 건너뛸 행 수를 지정합니다. OFFSET n은 결과의 처음 n개 행을 건너뜁니다. 음수 OFFSET도 지원됩니다. OFFSET -n은 결과의 마지막 n개 행을 건너뜁니다. 소수 OFFSET도 지원됩니다. OFFSET n에서 0 < n < 1이면 결과의 처음 n * 100%를 건너뜁니다. 예시: • OFFSET 0.1 - 결과의 처음 10%를 건너뜁니다.
참고 • 이 값은 0보다 크고 1보다 작은 Float64 숫자여야 합니다. • 계산 결과 행 수가 소수가 되면 다음 정수로 올림됩니다.
FETCH는 쿼리 결과에 포함될 수 있는 최대 행 수를 지정합니다. ONLY 옵션은 OFFSET으로 생략된 행 바로 다음의 행을 반환하는 데 사용됩니다. 이 경우 FETCHLIMIT 절을 대신합니다. 예를 들어, 다음 쿼리는
SELECT * FROM test_fetch ORDER BY a OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
는 해당 쿼리와 동일합니다
SELECT * FROM test_fetch ORDER BY a LIMIT 3 OFFSET 1;
WITH TIES 옵션은 ORDER BY 절에 따라 결과 집합에서 마지막 행과 같은 순위인 추가 행도 반환할 때 사용됩니다. 예를 들어 fetch_row_count가 5로 설정되어 있는데 추가로 2개의 행이 다섯 번째 행의 ORDER BY 컬럼 값과 같으면, 결과 집합에는 7개의 행이 포함됩니다.
표준에 따르면 OFFSET 절과 FETCH 절이 모두 있을 경우 OFFSET 절은 FETCH 절보다 앞에 와야 합니다.
실제 오프셋은 offset 설정의 영향을 받을 수도 있습니다.

예시

입력 테이블(table):
┌─a─┬─b─┐
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 4 │
│ 1 │ 3 │
│ 5 │ 4 │
│ 0 │ 6 │
│ 5 │ 7 │
└───┴───┘
ONLY 옵션 사용:
Query
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS ONLY;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
└───┴───┘
WITH TIES 옵션 사용 예:
Query
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS WITH TIES;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
│ 5 │ 7 │
└───┴───┘
마지막 수정일 2026년 6월 10일