MySQL에서 UNION 연산자를 사용하면 두 개 이상의 테이블 조회 결과를 하나로 합칠 수 있습니다. 여기에 각 SELECT 절에 상수 값과 AS 별칭을 함께 지정하면, 기존 테이블에는 없는 새로운 열을 추가한 것과 같은 결과를 얻을 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.
1. 첫 번째 테이블 생성
먼저 DemoTable1이라는 이름의 테이블을 생성합니다.
mysql> create table DemoTable1
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.76 sec)
INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable1(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1(Name) values('Robert');
Query OK, 1 row affected (0.13 sec)SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable1;
출력 결과
+----+--------+
| Id | Name |
+----+--------+
| 1 | Chris |
| 2 | Robert |
+----+--------+
2 rows in set (0.00 sec)
2. 두 번째 테이블 생성
다음은 두 번째 테이블인 DemoTable2를 생성하는 쿼리입니다.
mysql> create table DemoTable2
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.48 sec)
두 번째 테이블에도 레코드를 삽입합니다.
mysql> insert into DemoTable2(Name) values('David');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable2(Name) values('Bob');
Query OK, 1 row affected (0.15 sec)SELECT 문으로 두 번째 테이블의 레코드를 확인합니다.
mysql> select *from DemoTable2;
출력 결과
+----+-------+
| Id | Name |
+----+-------+
| 1 | David |
| 2 | Bob |
+----+-------+
2 rows in set (0.00 sec)
3. UNION으로 두 테이블 결합 후 새 열 추가하기
이제 두 테이블을 UNION으로 결합하면서 'Age'라는 새로운 열을 추가해 보겠습니다. 핵심은 각 SELECT 절에서 상수 값(27, 20)을 지정하고 AS 키워드로 열 이름을 부여하는 것입니다. UNION은 위쪽 SELECT의 별칭을 기준으로 결과 열 이름을 결정합니다.
mysql> select Id,Name, 27 AS Age from DemoTable1
-> union
-> select Id,name,20 AS Age from DemoTable2;
출력 결과
+----+--------+-----+
| Id | Name | Age |
+----+--------+-----+
| 1 | Chris | 27 |
| 2 | Robert | 27 |
| 1 | David | 20 |
| 2 | Bob | 20 |
+----+--------+-----+
4 rows in set (0.00 sec)
위 결과를 보면 DemoTable1의 레코드에는 Age가 27로, DemoTable2의 레코드에는 Age가 20으로 표시됩니다. 이처럼 UNION과 상수 값, 별칭을 조합하면 실제 테이블 구조를 변경하지 않고도 조회 결과에 새로운 열을 손쉽게 추가할 수 있습니다.