티스토리 뷰
보통 오라클에서 페이징을 하거나 top n 을 뽑을 때에 ROWNUM을 사용한다.
헌데,
SELECT *
FROM (
(SELECT ROWNUM AS rnum,
FROM (
SELECT *
FROM tbl
WHERE ~~
ORDER BY regdate DESC) t.*
WHERE ROWNUM <= 100)
WHERE rnum > 80
과 같은 식으로 감싸줘야 한다.
매우 번거롭다.
이걸 ROW_NUMBER() OVER 구문을 통해 아래와 같이 변경할 수 있다.
SELECT *
FROM (
(SELECT t.*, ROW_NUMBER OVER (ORDER BY regdate DESC) rnum
FROM tbl)
WHERE rnum BETWEEN 80 AND 100
조금 깔끔해졌다.
반응형
댓글
공지사항