Oracle 12c 이상 버전에서 지원하며 쿼리 반환 행 수를 제한하여 페이징 기능을 구현합니다. MySQL의 LIMIT와 동일한 역할입니다.
전체 문법
[ OFFSET offset ROWS ]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]Code language: CSS (css)
1. OFFSET 절(선택 사항)
기능:앞쪽 N개 행을 건너뜁니다,페이징 처리에 사용합니다.
- 생략하면 오프셋은 0이며 첫 행부터 데이터를 읽어옵니다
- 오프셋이 음수일 경우:0으로 취급합니다
- 오프셋이
NULL이거나 전체 행 수보다 클 경우:아무 행도 반환하지 않습니다 - 오프셋에 소수점이 있을 경우:소수 부분은 버리고 정수만 사용합니다
2. FETCH 절
기능:반환할 행 개수를 지정하며 행 개수 방식과 백분율 방식 두 가지를 지원합니다.
ONLY:지정한 수만큼 행을 가져옵니다(가장 자주 사용)WITH TIES:마지막 행의 정렬 필드 값과 동일한 데이터를 함께 조회합니다.ORDER BY와 함께 사용해야 합니다
예제 코드
name 기준 내림차순으로 상위 5건 조회
SELECT *
FROM student
ORDER BY name DESC
FETCH NEXT 5 ROWS ONLY;
상위 2행 가져오기
select * from student fetch next 2 rows only;Code language: JavaScript (javascript)
실행 결과:테이블 첫 두 레코드 jim、lisa가 반환됩니다.
페이징:3행 건너뛰고 4행 읽기(2페이지, 페이지당 4건)
SELECT *
FROM student
ORDER BY id
OFFSET 3 ROWS
FETCH NEXT 4 ROWS ONLY;
백분율로 반환, 전체 데이터의 10% 가져오기
SELECT *
FROM student
FETCH NEXT 10 PERCENT ROWS ONLY;
WITH TIES 사용법(동순위 포함)
SELECT *
FROM student
ORDER BY score DESC
FETCH NEXT 3 ROWS WITH TIES;
3위와 점수가 같은 레코드가 여러 개라면 전부 조회되므로 실제 결과 행 수가 3보다 많을 수 있습니다.
FETCH
Previous: WHERE 조건 조회