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

MySQL 쿼리에서 열에 사용자 정의 값을 추가하는 방법

MySQL에서 조회 결과에 실제 데이터에는 없는 사용자 정의 값을 추가하고 싶은 경우가 있습니다. 이럴 때 UNION ALL을 활용하면 간단하게 해결할 수 있습니다. 아래에서 테이블 생성부터 값 추가까지 전체 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 ENUM 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> create table DemoTable1847
     (
     GameStatus ENUM('PENDING','COMPLETED','CANCELLED')
     );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1847 values('PENDING');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1847 values('COMPLETED');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1847 values('CANCELLED');
Query OK, 1 row affected (0.00 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1847;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+------------+
| GameStatus |
+------------+
| PENDING    |
| COMPLETED  |
| CANCELLED  |
+------------+
3 rows in set (0.00 sec)

4. UNION ALL로 사용자 정의 값 추가하기

이제 핵심 부분입니다. UNION ALL을 사용하면 기존 조회 결과에 원하는 임의의 값을 덧붙일 수 있습니다.

mysql> select * from DemoTable1847
     union all
     select 'REFUND';

실행 결과는 다음과 같습니다.

+------------+
| GameStatus |
+------------+
| PENDING    |
| COMPLETED  |
| CANCELLED  |
| REFUND     |
+------------+
4 rows in set (0.00 sec)

정리

위 결과를 보면 기존의 PENDING, COMPLETED, CANCELLED 세 개의 값 뒤에 새로운 값인 'REFUND'가 추가된 것을 확인할 수 있습니다. 이처럼 UNION ALL은 두 SELECT 결과를 그대로 합쳐주기 때문에, 드롭다운 목록에 기본 옵션을 추가하거나 보고서에 특정 행을 강제로 포함시켜야 할 때 매우 유용하게 활용됩니다. 참고로 중복 제거가 필요 없다면 UNION 대신 성능상 유리한 UNION ALL을 사용하는 것이 좋습니다.