SELECT * FROM DEPT WHERE DEPTNO IN (10,20,30)
UNION ALL 
SELECT * FROM DEPT WHERE DEPTNO IN (30,40,50);

SELECT * FROM DEPT WHERE DEPTNO IN (10,20,30)
UNION 
SELECT * FROM DEPT WHERE DEPTNO IN (30,40,50)

----------------------------------------------

WITH TMP AS
(
SELECT * FROM DEPT WHERE DEPTNO IN (10,20,30)
UNION ALL 
SELECT * FROM DEPT WHERE DEPTNO IN (30,40,50)
)
SELECT DISTINCT * FROM TMP ORDER BY DEPTNO

차이점은 중복 제거 여부다. 

따라서 나온 결과에 DISTINCT 를 먹인 것과 같다.

 

만약 중복제거가 불필요하다면 UNION ALL을 사용해 불필요한 연산을 피하는 것이 좋다.

 

 

 

 

 

 

'개발 > 오라클 SQL' 카테고리의 다른 글

NOT IN 에서 NULL 사용 시 주의사항  (0) 2023.01.01
집합 연산자 사용 시 주의사항  (0) 2022.12.30
ORDER BY 다루기  (0) 2022.12.26
NULL을 다룰 때 주의할 점  (0) 2022.12.23
오라클 비밀번호 만료  (0) 2022.11.27

+ Recent posts