SQL 기본 | DML : 데이터 조작 언어 | UNION, UNION ALL

UNION 연산자는 두 개 이상의 SELECT 문의 결과 집합을 결합하는 데 사용된다.

UNION은 두개의 SQL 문의 결과를 결합하는데 사용되는 명령이다. 그러고 보면 UNION는 JOIN와 다소 유사하다. 이 두 명령 모두 여러 테이블에서 데이터를 가져올 수 있기 때문이다. 그러나 UNION이 제한되는 것은 두개의 SQL 문에서 만들어진 필드가 동일한 데이터 유형에 사용되어야 한다. 또한 UNION 명령을 사용하는 경우 중복 데이터는 출력되지 않는다(SELECT DISTINCT와 유사).

UNION 생성 조건

  • UNION 내의 각 SELECT 문은 같은 수의 열을 가져야 한다.
  • 열은 유사한 데이터 형식을 가져야 한다.
  • 각 SELECT 문의 열은 또한 동일한 순서로 있어야 한다.

UNION ALL도 두 SQL 문의 결과를 결합하는데 사용되는 명령이다. UNION ALL가 UNION과 다른 점은 UNION ALL은 데이터 값이 중복되더라도 조건에 일치하는 데이터를 모두 표시한다.

UNION, UNION ALL 문법

UNION는 아래와 같이 사용한다.

UNION 문법

[SQL문1]
UNION
[SQL문2];

여기서 SQL문이 두개가 들어간다.

UNION ALL는 아래와 같이 사용한다.

UNION ALL 문법

[SQL문1]
UNION ALL
[SQL문2];

ALL를 붙은거 말고는 UNION과 모두 동일하다.

UNION 예제

그럼 다음과 같은 두 테이블이 있다고 하자.

store_information 테이블

store_name sales txn_date
Los Angeles 1500 Jan-05-2018
San Diego 250 Jan-07-2018
Los Angeles 300 Jan-08-2018
Boston 700 Jan-08-2018

internet_sales 테이블

txn_date sales
Jan-07-2018 250
Jan-10-2018 535
Jan-11-2018 320
Jan-12-2018 750

여기서 매출(sales)의 날짜를 모두 확인하는 경우에는 다음의 SQL 문을 사용할 수 있다.

SELECT txn_date FROM store_information
UNION
SELECT txn_date FROM internet_sales;

실행 결과는 아래와 같다.

txn_date
Jan-05-2018
Jan-07-2018
Jan-08-2018
Jan-10-2018
Jan-11-2018
Jan-12-2018

하나 알아야 할 점은 SQL 문(또는 두 절에서 사용 가능한 경우)에 SELECT DISTINCT txn_date를 사용하면 같은 결과가 나온다.

UNION ALL 예제

그리고 상점 판매 및 인터넷 매출이 있는 날짜를 조회해 보도록 한다. 그럴 경우에 다음 SQL 문을 사용한다.

SELECT txn_date FROM store_information
UNION ALL
SELECT txn_date FROM internet_sales;

결과는 아래와 같다.

txn_date
Jan-05-2018
Jan-07-2018
Jan-08-2018
Jan-08-2018
Jan-07-2018
Jan-10-2018
Jan-11-2018
Jan-12-2018



최종 수정 : 2021-08-27