OFFSET 절 및 FETCH FIRST 절

OFFSET 절 및 FETCH FIRST 절은 결과 세트의 특정 시작점에서 시작되는 지정된 행의 범위를 반환하는 데 사용됩니다. 큰 결과 세트에서 검색된 행을 제한하는 기능을 사용하면 데이터를 "페이징"하여 효율성을 향상시킬 수 있습니다.

OFFSET 절은 데이터를 반환하기 전에 건너뛸 행 수를 표시합니다. OFFSET 절이 SELECT 문에서 사용되지 않으면 시작 행은 0입니다. FETCH FIRST 절은 반환할 행 수를 OFFSET 절에서 표시한 시작점에서부터 1 이상의 부호 없는 정수나 백분율로 지정합니다. OFFSETFETCH FIRST 모두 SELECT 문에서 사용되는 경우, OFFSET 절이 먼저 와야 합니다.

OFFSETFETCH FIRST 절은 하위 쿼리에서 지원되지 않습니다.

OFFSET 절 포맷

OFFSET 포맷은 다음과 같습니다.

복사
OFFSET [ n {ROWS | ROW} ]

n은 부호 없는 정수입니다. n이 결과 세트에서 반환된 행 수보다 큰 경우, 반환되는 것이 없어 오류 메시지가 나타나지 않습니다.

ROWSROW와 동일합니다.

FETCH FIRST 절 포맷

FETCH FIRST 포맷은 다음과 같습니다.

복사
FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]

n은 반환될 행 수입니다. n이 생략된 경우 기본 값은 1입니다.

PERCENT가 뒤에 오지 않으면 n은 1 이상의 부호 없는 정수입니다. n 다음에 PERCENT가 오면, 값은 양의 분수 값 또는 부호 없는 정수입니다.

ROWSROW와 동일합니다.

WITH TIESORDER BY 절과 함께 사용되어야 합니다.

WITH TIES는 피어 행 때문에 FETCH에서 지정한 개수 값보다 더 많은 행을 반환할 수 있으며, ORDER BY 절을 기반으로 하는 분명하지 않은 이 행도 반환됩니다.

예제

last_name, first_name 순서로 정렬된 결과 세트의 26번째 행에서 정보를 반환합니다.

복사
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS

반환할 행을 최대 10개까지 지정합니다.

복사
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY

10개의 행 및 피어 행(ORDER BY 절을 기반으로 한 분명하지 않은 행)을 반환합니다.

복사
SELECT emp_id, last_name, first_name FROM emp ORDER BY last_name, first_name OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES