본문 바로가기
DB/Oracle

ROWNUM

by so_o 2021. 6. 29.
SELECT * FROM NOTICE;

SELECT NOTICE.TITLE, NOTICE.NAME FROM NOTICE;
-- 원래 "테이블 명.행 이름" 의 방식으로 입력하는 것이다. 

SELECT ROWNUM NOTICE.* FROM NOTICE;
-- *을 다른 행과 같이 사용하려면 NOTICE.*의 방식으로 입력해야한다.

 

 


 

* ROWNUM : SQL Developer에서 자동으로 붙는 번호를 말한다.

 

 

SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 5;

위의 코드를 실행하면 1부터 5까지만 출력된다.

 

 

하지만, BETWEEN 6 AND 10을 입력하면 결과가 출력되지 않는다.

SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 6 AND 10;

-- 2 AND 10을 입력해도 안됨

 

이를 해결하기 위한 방법을 알아보겠다.

 

 


 

 

SELECT ROWNUM, NOTICE.* FROM NOTICE;

위의 코드는

ROWNUM과 NOTICE에 있는 모든 데이터를 출력하라는 의미이다.

 

 

SELECT * FROM (SELECT ROWNUM, NOTICE.* FROM NOTICE);

위의 코드의 결과는

NOTICE의 테이블이 아니라 새로운 테이블의 값이 된다.

 

 

SELECT * FROM (SELECT ROWNUM, NOTICE.* FROM NOTICE) WHERE ROWNUM BETWEEN 6 AND 10;

위의 코드를 실행하면 결과가 출력되지 않는다.

SELECT * FROM 에서 만들어진 ROWNUM과 WHERE문을 이용하여 출력하는 ROWNUM이 같기 때문이다.

 

 

 

별칭을 사용하면, 정상적으로 출력된다.

SELECT * FROM (SELECT ROWNUM NUM, NOTICE.* FROM NOTICE) WHRER NUM BETWEEN 6 AND 10;

 

'DB > Oracle' 카테고리의 다른 글

내장 함수_ 문자열  (0) 2021.06.29
중복 값 제거 (DISTINT)  (0) 2021.06.29
정규식  (0) 2021.06.29
관계 연산자  (0) 2021.06.28
SQL_ DML  (0) 2021.06.28