본문 바로가기
DB/ORACLE

[ORACLE] ORDER BY 와 ROWNUM 함께 사용시 유의사항

by madinthe90 2022. 5. 3.
반응형

ROWNUM으로 채번을 할때 ORDER BY를 사용하는 경우 확인해야 될 사항에 대해 적어본다!

 

1. 테스트 테이블 데이터

 

2. ROWNUM 사용 (정렬 X)

SELECT 
	 ROWNUM
	,ID
	,NAME
FROM SAMPLE

 

3. ROWNUM 사용 + ORDER BY 사용, NAME 오름차순 정렬

1) SELECT 문에 바로 ROWNUM 과 ODER BY 동시 사용 

SELECT 
	 ROWNUM
	,ID
	,NAME
FROM SAMPLE
ORDER BY NAME ASC

ROWNUM이 뒤죽박죽 되어버린다.

 

2) ODER BY 로 선 정렬한뒤 SELECT 하면 ROWNUM 사용

SELECT 
	 ROWNUM
	,A.*
FROM
 ( SELECT 
	 ID
	,NAME
 FROM SAMPLE
 ORDER BY NAME ASC ) A

ROWNUM 정상 출력

 

3-1번 처럼 ROWNUM과 ORDER BY를 같이 사용할 경우

2번 처럼 SELECT를 실행해 ROWNUM을 채번한 후 ORDER BY를 사용해 NAME 순으로 정렬하기때문에

ROWNUM 순서가 뒤죽박죽되어버린다.

 

ORDER BY와 ROWNUM을 같이 사용하려면 3-2번 처럼

정렬을 먼저(ORDER BY)한 후 그 데이터값에 ROWNUM을 사용하여야 한다!

 

이런 이유는 아래 처럼 SELECT문 실행 순서에서 정렬이 마지막이기 때문이다!!


- SELECT 실행 순서

  1. FROM : 테이블 확인
  2. ON : 조인 조건 확인
  3. JOIN : 테이블 조인
  4. WHERE : 데이터 필터링 조건 확인
  5. GROUP BY : 데이터 그룹화
  6. HAVING : 그룹화 이후 데이터 조건 확인
  7. SELECT : 데이터 추출
  8. DISTINCT : 중복 제거
  9. ORDER BY : 정렬

https://madinthe90.tistory.com/27

 

[SQL] SELECT 쿼리 실행 순서

SQL SELECT 문의 순서를 알고나면 쿼리를 효율적으로 짜는데 도움이 된다. SELECT 문의 작성 순서와 실행순서를 정리해보자. - SELECT 작성 순서 SELECT FROM WHERE GROUP BY HAVING ORDER BY - SELECT 실행 순서..

madinthe90.tistory.com


 

 

반응형

댓글