UNION ALL을 활용한 두 열 값 통합 조회
MySQL에서 서로 다른 두 개의 열(Name1, Name2)에 저장된 값들을 하나의 열 목록으로 합쳐서 조회하려면 UNION ALL 연산자를 사용하면 됩니다. UNION ALL은 여러 SELECT 쿼리의 결과를 그대로 이어 붙여 반환하며, 중복 제거 없이 모든 행을 그대로 포함합니다.
아래 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1813
(
Name1 varchar(20),
Name2 varchar(20)
);
Query OK, 0 rows affected (0.00 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 샘플 레코드를 추가합니다.
mysql> insert into DemoTable1813 values('John','Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Adam','Robert');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Mike','Sam');
Query OK, 1 row affected (0.00 sec)3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1813;
실행 결과는 다음과 같습니다.
+-------+--------+
| Name1 | Name2 |
+-------+--------+
| John | Chris |
| Adam | Robert|
| Mike | Sam |
+-------+--------+
3 rows in set (0.00 sec)
4. 두 열의 값을 하나의 열로 통합하기
각 SELECT 문에서 별칭(Alias)을 동일하게 지정한 뒤 UNION ALL로 연결하면, 두 열의 값이 하나의 'Name' 열로 합쳐져 출력됩니다.
mysql> select Name1 as Name from DemoTable1813
union all
select Name2 as Name from DemoTable1813;
실행 결과는 다음과 같습니다.
+--------+
| Name |
+--------+
| John |
| Adam |
| Mike |
| Chris |
| Robert |
| Sam |
+--------+
6 rows in set (0.00 sec)
참고: UNION과 UNION ALL의 차이
UNION은 결과 집합에서 중복된 값을 자동으로 제거하지만, 내부적으로 정렬 작업이 수행되어 성능 비용이 발생할 수 있습니다. 반면 UNION ALL은 중복 여부와 관계없이 모든 행을 그대로 반환하므로 속도가 더 빠릅니다. 단순히 두 열의 값을 나열하는 것이 목적이라면 성능 면에서 UNION ALL을 사용하는 것이 유리합니다.