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