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