보통 오라클에서 페이징을 하거나 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
'데이터베이스 > Oracle' 카테고리의 다른 글
left join과 left outer join SQL문의 차이점 (0) | 2015.12.22 |
---|---|
조인(Join) (0) | 2015.11.20 |
CASE ~ WHEN ~ THEN ~ ELSE ~ END (0) | 2015.11.20 |
[Oracle 관리] 오라클 EM(Enterprise Manager) 사용법 (0) | 2015.11.06 |
[Oracle] 계정 생성 및 삭제, 권한 부여, 테이블스페이스 지정 (0) | 2015.11.06 |