SELECT* FROM(SELECT ROWNUM NUM, NOTICE.*FROM NOTICE) WHERE NUM BETWEEN 2 AND 10;
위와 같이하면 2부터 10까지 출력할 수 있다.
위의식은 다음과 같다.
SELECT ROWNUM NUM, NOTICE.*FROM NOTICE로 1부터10까지의 칼럼을 ROWNUM으로 만들되 NUM으로 별칭을 지어준다.
이후 SELECT* FROM(SELECT ROWNUM NUM, NOTICE.*FROM NOTICE) WHERE NUM BETWEEN 2 AND 10;
을 수행하는데 왜 별칭을 붙이냐고 반문 할 수 있다.
왜냐하면 ROWNUM의 기능때문에 그렇다. ROWNUM은 실행할때 1부터 1씩 증가시키는 명령어이기때문이다.
결론만 얘기하자면 왜 별칭을 사용해야하냐면 BETWEEN 2 AND 10에서 ROWNUM을 사용하지않기 위해서이다.
별칭을 사용함으로서 ROWNUM 명령어를 사용하지 말아야한다.
ROWNUM을 2~10만 뽑기위해 ROWNUM을 NUM으로 별칭하고 NOTICE테이블에서
WHERE절에서 ROWNUM대신 NUM으로 찾음으로서 ROWNUM 명령어를 실행하지 않고 찾게된다.
SELECT* FROM(SELECT ROWNUM NUM, NOTICE.*FROM NOTICE) WHERE NUM BETWEEN 2 AND 10;
을 통해 정상적인 값을 도출 할 수 있따.
---------------------------------------------------------------------------------------------------------------------------------
참고내용
SELECT* FROM(SELECT ROWNUM, NOTICE.*FROM NOTICE) WHERE ROWNUM BETWEEN 2 AND 10;을 실행하면 아무값도 출력되지 않는것을 확인 할 수 있다.
SELECT* FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 10;
SELECT ROWNUM, NOTICE.*FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 10;
SELECT NOTICE.* FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 10; 의 결과 값음 같다.
즉 ROWNUM,부분은 생략가능한것을 알 수 있다.
따라서 SELECT* FROM(SELECT ROWNUM, NOTICE.*FROM NOTICE) WHERE ROWNUM BETWEEN 2 AND 10; 은 SELECT ROWNUM, NOTICE.*FROM NOTICE WHERE ROWNUM BETWEEN 2 AND 10;와 같은 형식임을 알 수 있다.
즉
https://keyboardfoot.tistory.com/26?category=989241
Oracle-SQL ROWNUM이 >1일때 왜 출력이 안될까?
SELECT ROWNUM, NOTICE.* FROM NOTICE WHERE ROWNUM BETWEEN 2 AND 10;하면 결과 값이 안나온다. 왜냐하면 ROWNUM은 컬럼이 아니기때문이다. 런타임 마다 1씩 증가시키는 열이다 (가장 중요한 의미이다). 따라서..
keyboardfoot.tistory.com
해당 글과 같은 경우라는 것이다.
-----------------------------------------------------------------------------------------------------------------------------------
'2022 > Oracle' 카테고리의 다른 글
Oracel-SQL VIEW만들기 (0) | 2021.12.29 |
---|---|
Oracel-SQL VIEW만들기 (0) | 2021.12.29 |
Oracle-SQL ROWNUM이 >1일때 왜 출력이 안될까? (0) | 2021.12.28 |
ORACEL-SQL 줄 번호 붙이기 (0) | 2021.12.28 |
외부에서 Oracle DB접속 (0) | 2021.12.26 |