오라클 rownum 쿼리

보통 오라클에서 페이징을 하거나 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


조금 깔끔해졌다.

저작자 표시 비영리 변경 금지
신고

카테고리

분류 전체보기 (659)
About me. (6)
Daylogs (624)
영어공부 (0)
My works - 추억 (29)
비공개 (0)