2013년 8월 4일 일요일

ORACLE ROWNUM

SELECT절에 의해 추출된 데이터(ROW)에 붙는 순번이다. 다시 말해 WHERE절까지 만족 시킨 자료에 붙은 순번이라고 이해를 하길 바란다. WHERE절에 ROWNUM을 이용하여 조건을 주면 다른 조건을 만족시킨 결과에 대해 조건이 반영된다. SELECT 리스트에 ROWNUM을 이용하는 것도 물론 가능하다. 이때 ORDER BY를 사용한다면 WHERE절까지 만족 시킨 결과에 ROWNUM이 붙은 상태로 ORDER BY가 반영된다. 아래의 예문을 이해하자. 




SQL> select rownum, ename, sal from emp
  2  where sal >= 2900;
    ROWNUM ENAME            SAL
---------- ---------- ----------
        1 JONES            2975
        2 SCOTT          3000
        3 KING            5000
        4 FORD            3000
SQL> select rownum, ename, sal from emp
  2  where sal > 2900
  3  order by ename;
    ROWNUM ENAME            SAL
---------- ---------- ----------
        4 FORD            3000
        1 JONES            2975
        3 KING            5000
        2 SCOTT            3000
SQL> select rownum, ename, sal from emp
  2  where sal >= 2900
  3  and rownum < 3;
    ROWNUM ENAME            SAL
---------- ---------- ----------
        1 JONES            2975
        2 SCOTT            3000 


아래 예문도 이해 하세요~


rownum1로 시작해야 작동하는 제한사항이 있으며, 1로 시작하지 않으면 원하는 결과를 뽑지 못한다.

SELECT ROWNUM,ename from emp WHERE ROWNUM BETWEEN 1 and 3;
ROWNUM      ENAME    
----------- ----------
          1 SMITH    
          2 ALLEN    
          3 WARD     
3 rows selected.

SELECT ROWNUM,ename from emp WHERE ROWNUM BETWEEN 2 and 3;
ROWNUM      ENAME    
----------- ----------
0 rows selected.
SQL> SELECT t1.rn,
                   t1.ename
            FROM   (SELECT ROWNUM rn,
                           ename
                    FROM   emp) t1
            WHERE  t1.rn BETWEEN 2 and 3;
RN          ENAME    
----------- ----------
          2 ALLEN    
          3 WARD



[출처] 오라클자바커뮤니티, 오엔제이프로그래밍 

댓글 없음:

댓글 쓰기