Language/Oracle

[Orcale] 페이징 ROWNUM, OFFSET

김당 2024. 2. 27. 08:20

페이징 기법을 통해 데이터를 나누어 표현하기 위해 oracle에서는 ROWNUM, OFFSET을 사용할 수 있다.

1. ROWNUM

- Oracle 12C 이전에 사용하던 페이징 기법
- 쿼리를 view로 감싸 사용해야하기때문에 복잡하다.

SELECT *
FROM (
 SELECT A.*, ROWNUM RNUM
 FROM (
  SELECT *
  FROM table1
 )A
 WHERE ROWNUM <= 100
 )
WHERE RNUM >= 90
;


2. OFFSET FETCH

- Oracle 12c 이후 행제한을 사용해 간결하게 페이징 가능

*옵션

[OFFSET offset ROWS] FETCH NEXT [row_count | percent PERCENT] ROWS [ONLY | WITH TIES]

- OFFSET : 시작 행 정의 (생략시 0)
- FETCH : 반환할 행 정의
- PERCENT : 행 개수 지정이 아닌 비율로 조회
- ONLY : 지정한 행까지만 출력
- WITH TIES : 지정한 마지막 행과 같은 sort key면 같이 출력해줌(order by 필수)

SELECT * 
FROM table1 
ORDER BY sort_key
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY



*참고
https://devpad.tistory.com/m/71
https://rimkongs.tistory.com/m/158