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
아래 예문도 이해 하세요~
rownum은 1로 시작해야
작동하는 제한사항이 있으며, 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
[출처] 오라클자바커뮤니티, 오엔제이프로그래밍
댓글 없음:
댓글 쓰기