Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

여러 SELECT 문의 결과를 하나로 합치는 MySQL 쿼리 방법

여러 개의 SELECT 문에서 각각의 결과를 하나의 결과 집합으로 가져오려면 UNION ALL을 사용하면 됩니다. UNION ALL은 각 SELECT 문의 결과를 중복 제거 없이 그대로 이어 붙여 하나의 테이블 형태로 반환해 줍니다.

UNION ALL 기본 문법

select yourValue1 AS anyColumnName
UNION ALL
select yourValue2 AS yourColumnName
.
.
.
N

각 SELECT 문마다 컬럼 이름(별칭)을 지정해 주며, 첫 번째 SELECT 문의 컬럼명이 최종 결과 집합의 컬럼명으로 사용됩니다.

예제: 여러 숫자를 각각 다른 행으로 출력하기

위 문법을 실제로 적용하여 100부터 10억까지의 숫자들을 각각 별도의 행으로 나열하는 쿼리를 작성해 보겠습니다.

mysql> select 100 AS Number
    UNION ALL
    select 1000 AS Number
    UNION ALL
    select 10000 AS Number
    UNION ALL
    select 100000 AS Number
    UNION ALL
    select 1000000 AS Number
    UNION ALL
    select 10000000 AS Number
    UNION ALL
    select 100000000 AS Number
    UNION ALL
    select 1000000000 AS Number;

실행 결과

쿼리를 실행하면 아래와 같이 각 숫자가 개별 행으로 출력됩니다.

+------------+
| Number     |
+------------+
|       100 |
|      1000 |
|     10000 |
|    100000 |
|   1000000 |
|  10000000 |
| 100000000 |
| 1000000000 |
+------------+
8 rows in set (0.00 sec)

UNION ALL과 UNION의 차이점

참고: UNION ALL은 중복된 값도 그대로 모두 반환하는 반면, 일반 UNION을 사용하면 중복 행이 자동으로 제거됩니다. 따라서 단순히 여러 SELECT 문의 결과를 빠짐없이 합치고 싶다면, 불필요한 중복 검사 과정이 없어 성능 면에서 더 유리한 UNION ALL을 사용하는 것이 좋습니다.