[MySQL/MariaDB] Union all 사용법

동일한 컬럼을 가지고 있는 두 테이블은 JOIN과 ON절을 이용해서 합칠 수 있다.
하지만 동일한 컬럼을 가지고 있지 않은데 검색결과를 함께보고싶다면 고려해봐야할 것이 바로 union all을 사용해보자.

  • JOIN: 수직결합
  • UNION: 수평결합
    • UNION: 중복데이터 제거
    • UNION ALL: 중복여부와 상관없이 모든 데이터 출력

만약 과일가게테이블과 편의점테이블이 아래처럼 있다고 생각해보자.

  • 과일가게테이블

    1
    2
    3
    4
    5
    6
    7
    8
    과일가게테이블
    +--------+--------+
    | 품 명 | 가 격 |
    +--------+--------+
    | 바나나 | 1500 |
    | 딸기 | 2000 |
    | 사과 | 2000 |
    +--------+--------+
  • 편의점테이블

    1
    2
    3
    4
    5
    6
    7
    8
    편의점테이블
    +--------+--------+
    | 품 명 | 가 격 |
    +--------+--------+
    | 바나나 | 1500 |
    | 사과 | 2500 |
    | 하리보 | 2000 |
    +--------+--------+

UNION

중복데이터 제거한 결과가 출력된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT * FROM 과일가게테이블 
UNION
SELECT * FROM 편의점테이블;

// 결과
+--------+--------+
| 품 명 | 가 격 |
+--------+--------+
| 바나나 | 1500 |
| 딸기 | 2000 |
| 사과 | 2000 |
| 바나나 | 1500 |
| 사과 | 2500 |
| 하리보 | 2000 |
+--------+--------+




UNION ALL

중복여부와 상관없이 모든 데이터 출력된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT * FROM 과일가게테이블 
UNION ALL
SELECT * FROM 편의점테이블;

// 결과
+--------+--------+
| 품 명 | 가 격 |
+--------+--------+
| 바나나 | 1500 |
| 딸기 | 2000 |
| 사과 | 2000 |
| 사과 | 2500 |
| 하리보 | 2000 |
+--------+--------+