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


조금 깔끔해졌다.


[출처] http://ohgyun.com/39

블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,