Language/MySQL
[MySQL] SQL 여러 테이블을 하나로 합치기 UNION & UNION ALL
나는 정은
2022. 10. 14. 17:38
멋쟁이 사자처럼 AI스쿨
데이터리안 Special Lecture : SQL 중급반
[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런 | 강의
인프런 누적 수강생 10,000명 이상, 풍부한 온/오프라인 강의 경험을 가진 데이터리안의 SQL 중급 강의. SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다., - 강의 소개 | 인프런...
www.inflearn.com

UNION이란 ?
두 테이블의 합집합을 구하는 집합 연산자이다.
중복 제거를 한 뒤 테이블을 출력한다 .
- 하나의 ORDER BY만 사용할 수 있다.
- 각 SELECT의 column 수, 데이터 타입(표현식) 같아야 한다.
- SELECT문들 끼리 순서는 상관없다.
- 유니온을 한 결과가 중복되면 하나만 나온다. (DEFAULT)
- 열의 타입은 같거나 반환 가능한 형태여야 한다.
t1 = {id : (1, 2, 3)}
t2 = {id : (2, 3, 4)}
SELECT id
FROM t1
UNION
SELECT id
FROM t2
id
1
2
3
4
UNION ALL
UNION과 같이 두 테이블의 합집합을 구하지만, 겹치는 것을 중복 제거하지 않고
다 같이 포함시켜 출력하는 연산자이다.
t1 = {id : (1, 2, 3)}
t2 = {id : (2, 3, 4)}
SELECT id
FROM t1
UNION ALL
SELECT id
FROM t2
1
2
3
2
3
4
UNION & UNION ALL 예시 )
홈플러스
+------------+------------+
| 품명 | 가격 |
+------------+------------+
| 바나나 | 1500 |
| 딸기 | 2000 |
| 사과 | 2000 |
+------------+------------+
이마트
+------------+------------+
| 품명 | 가격 |
+------------+------------+
| 바나나 | 1500 |
| 사과 | 2500 |
| 메론 | 2000 |
+------------+------------+
SELECT *
FROM 홈플러스
UNION
SELECT *
FROM 이마트
+------------+------------+
| 품명 | 가격 |
+------------+------------+
| 바나나 | 1500 |
| 딸기 | 2000 |
| 사과 | 2000 |
| 사과 | 2500 |
| 메론 | 2000 |
+------------+------------+
SELECT *
FROM 홈플러스
UNION ALL
SELECT *
FROM 이마트
+------------+------------+
| 품명 | 가격 |
+------------+------------+
| 바나나 | 1500 |
| 딸기 | 2000 |
| 사과 | 2000 |
| 바나나 | 1500 |
| 사과 | 2500 |
| 메론 | 2000 |
+------------+------------+