SQL

[SQL Oracle] ROWNUM =2 사용법 , 쿼리문 실행순서

yangcotton 2023. 1. 5. 19:32

ROWNUM은 n번째 행을 구할 때 사용하는 WHERE의 조건이다.
특정 개수만큼 원하는 데이터를 추출할 수 있다.


T1에 데이터가 100개라면 

SELECT * FROM TABLE T1

이렇게 쓰면 100개가 나오고

SELECT * FROM TABLE T1 WHERE ROWNUM < 10

이렇게하면 9개 나온다

 

SELECT * FROM TABLE T1 WHERE ROWNUM = 1

이렇게하면 첫번째의 1개의 데이터가 나오는데

 

SELECT * FROM TABLE T1 WHERE ROWNUM = 2

이렇게하면?

두번째의 데이터가 나오지 않고

아무것도 나오지 않는다

 

그 이유는 ROWNUM은 WHERE절이 실행될때 조건의 부합하면 번호를 부여해주고 그렇지 않으면 버리는 방식이기 때문이다. 순번을 미리 부여하고 가져오는것이 아닌 조건에 맞으면 가져오고 아니면 버리므로

1번이 채워지지않으면 2은 채워질수없으므로 ROWNUM = 1 은 있어도 ROWNUM =2, ROWNUM =3 .... ROWNUM =99는 없다.

 

하지만 가져오고 싶다면?

 

쿼리문 실행순서에 따르면

: FROM ▷ WHERE ▷ GROUP BY ▷ HAVING ▷ SELECT ▷ ORDER BY

 

순이므로 FROM에 미리 조건을 주면된다.

 

SELECT *
	FROM (SELECT ROWNUM AS RN , T1.*
    		FROM TABLE T1 ) A
WHERE A.RN = 2 ;

'SQL' 카테고리의 다른 글

[SQL] NVL , NVL2  (0) 2023.02.10
SQL Oracle - 튜닝 Hint 힌트  (0) 2023.01.06
SQL SELECT 조건절 / WHERE 조건절 / JOIN  (0) 2022.11.29