SELECT된 결과물을 특정갯수만 출력하기
[CODE type=oracle8]SELECT *
FROM TEST;[/CODE]
FROM TEST;[/CODE]
<결과>
ID DATA
----------- -----------
3 5
7 3
2 9
10 3
4 rows selected.
----------- -----------
3 5
7 3
2 9
10 3
4 rows selected.
TEST란 Table을 생성하였다.
ROWNUM이란 것을 이용하여 결과 값을 2줄만 출력시켜 보겠다.
[CODE type=oracle8]SELECT *
FROM TEST
WHERE ROWNUM < 3;[/CODE]
FROM TEST
WHERE ROWNUM < 3;[/CODE]
<결과>
ID DATA
----------- -----------
3 5
7 3
2 rows selected.
----------- -----------
3 5
7 3
2 rows selected.
이번엔 2줄 이상부터 출력을 해보겠다.
[CODE type=oracle8]SELECT *
FROM TEST
WHERE ROWNUM > 2;[/CODE]
FROM TEST
WHERE ROWNUM > 2;[/CODE]
<결과>
ID DATA
----------- -----------
0 rows selected.
----------- -----------
0 rows selected.
출력 결과 값이 0개이다.
이번엔 2번째 줄에 있는 값만 출력 해보겠다.
[CODE type=oracle8]SELECT *
FROM TEST
WHERE ROWNUM = 2;[/CODE]
FROM TEST
WHERE ROWNUM = 2;[/CODE]
<결과>
ID DATA
----------- -----------
0 rows selected.
----------- -----------
0 rows selected.
음 그럼 WHERE절에서 ROWNUM은 무엇보다 작은 값만 검색이 되는 것인가 =이나, < 는 검색이 안되는것인가?
[CODE type=oracle8] SELECT *
FROM TEST
WHERE ROWNUM = 1;[/CODE]
FROM TEST
WHERE ROWNUM = 1;[/CODE]
<결과>
ID DATA
----------- -----------
3 5
1 rows selected.
----------- -----------
3 5
1 rows selected.
1번 줄은 나온다.
그렇다면 특별한 행 이상을 출력하는 방법은 없는것인가?
아래와 같은 방법을 이용하면 3번째 줄을 출력할 수 있다.
[CODE type=oracle8] SELECT *
FROM (
SELECT ROWNUM RN
, TEST.*
FROM TEST
WHERE ROWNUM <= 3
) A
WHERE A.RN = 3;[/CODE]
FROM (
SELECT ROWNUM RN
, TEST.*
FROM TEST
WHERE ROWNUM <= 3
) A
WHERE A.RN = 3;[/CODE]
<결과>
RN ID DATA
----------- ----------- -----------
3 2 9
1 rows selected.
----------- ----------- -----------
3 2 9
1 rows selected.
정확히 왜 바로 ROWNUM = 3을 했을 경우 안나오는지 이유에 대해서는
명확하게 알고있지 않다.
좀더 연구를 해봐야할 것 같다.
본 테스트는 Oracle 9i에서 수행되었습니다.