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    | 
+------------+------------+