UNION/UNION ALL이란?

- 두 개의 SELECT문을 합치는 것을 말합니다.

- 두 개의 SELECT문을 합치는 것이기때문에 제약조건이 많습니다.

UNION/UNION ALL의 제약조건

- 상위SQL문과 하위SQL문의 컬럼 개수가 동일해야 합니다.

- 상위SQL문과 하위SQL문의 컬럼 위치가 동일한 컬럼들이 결합이 됩니다.

※ 컬럼 이름만 동일하다고 결합이 되지 않습니다.

- 컬럼명은 최상위 SQL문의 명칭을 따르게 됩니다.

UNION과 UNION ALL의 차이점

- UNION은 중복된 행을 제거하지만 UNION ALL은 중복된 행을 허용합니다.

- 중복된 행을 꼭 제거해야하는 경우가 아니라면 보통 UNION ALL을 사용합니다.

- 실제 환경에서는 UNION을 사용하느 경우는 극히 드뭅니다.

예제

--다음 SQL의 IN을 UNION ALL을 사용해서 해결하시오.
SELECT *
  FROM Orders T1
 WHERE T1.CustomerID IN ('ALFKI', 'TOMSP', 'VINET')

--다음과 같다.
SELECT *
  FROM Orders T1
 WHERE T1.CustomerID = 'ALFKI'
UNION ALL
SELECT *
  FROM Orders T2
 WHERE T2.CustomerID = 'TOMSP'
UNION ALL
SELECT *
  FROM Orders T3
 WHERE T3.CustomerID = 'VINET'