개발새발

[oracle] union & union all 본문

[Daliy]

[oracle] union & union all

재래김유진 2020. 4. 8. 16:02
728x90
반응형

조회한 다수의 select 문을 하나로 합치고 싶을 때 UNION을 사용.

 

UNION = 결과를 합칠때 중복되는 행은 하나만 표시

UNION ALL = 중복제거를 하지 않고 모두 합쳐서 표시

 


UNION

 

두개의 select 결과를 합칠수 있다.

합친 결과에서 중복되는 행은 하나만 표시한다.

 

단, 컬럼의 갯수가 같아야하고, 각 컬럼의 데이터타입이 같아야한다.

 

 

사용법

SELECT * FROM A

UNION (ALL)

SELECT * FROM B

 

 

 

두개의 테이블을  UNION 하기위한 조건으로 컬럼의 갯수와, 타입이 같아야 한다.

 

때문의 COUNTRIES에서는 COUNTRY_NAME 과 REGION_ID를 SELECT 하고, 

REGIONS 테이블에서는 REGION_NAME과 REGION_ID를 조회해보면

 

SELECT COUNTRY_NAME, REGION_ID FROM COUNTRIES

UNION

SELECT REGION_NAME, REGION_ID FROM REGIONS

 

 

결과는 요로케,,

(근데 왜 REGION_NAME 컬럼은 안나와? JOIN 같은거 아냐?)

 

또한, UNION은 중복을 허용하지 않는다.

 

따라서, 아래와 같이 중복된 데이터가 있으면 중복을 알아서 제거해 준다.

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1, 2)

 

 

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2, 3)

 

 

위 두개의 조회결과를 UNION하게 되면,

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1, 2)

UNION

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2, 3)

중복이 제거되어 나온다. 

 


UNION ALL

 

UNION ALL 은 중복을 제거하지 않는다. 

 

위 두개의 SELECT를 UNION ALL 하면 

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (1, 2)

UNION ALL

SELECT COUNTRY_NAME FROM COUNTRIES WHERE REGION_ID IN (2, 3)

중복된 결과를 포함시킨다.

 

https://dpdpwl.tistory.com/98

728x90
반응형

'[Daliy]' 카테고리의 다른 글

컴파일된 클래스파일 찾기  (0) 2020.04.24
[oracle] object 내 특정문자열 찾기  (0) 2020.04.08
[oracle] merge문  (0) 2020.03.24
[2019.12.17] ajax  (0) 2019.12.17
[2019.12.16]  (0) 2019.12.16
Comments