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

MySQL에서 열(Column)을 행(Row)으로 변환하는 방법 – UNION ALL 완벽 가이드

MySQL에서 테이블의 여러 열에 저장된 데이터를 하나의 열로 세로 방향(행 형태)으로 결합하고 싶다면 UNION ALL 연산자를 사용하면 됩니다. UNION ALL은 여러 SELECT 쿼리의 결과를 그대로 이어 붙여주는 역할을 하며, 중복 제거 없이 모든 값을 반환하기 때문에 열을 행으로 변환하는 작업에 적합합니다.

기본 문법

SELECT yourColumnName1 FROM yourTableName
UNION ALL
SELECT yourColumnName2 FROM yourTableName;

예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE DemoTable
-> (
-> Value1 int,
-> Value2 int
-> );
Query OK, 0 rows affected (0.88 sec)

데이터 삽입

INSERT 명령어를 사용해 샘플 레코드를 추가합니다.

mysql> INSERT INTO DemoTable VALUES(100,200);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES(500,600);
Query OK, 1 row affected (0.18 sec)

테이블 전체 조회

SELECT 문으로 저장된 모든 레코드를 확인해 보겠습니다.

mysql> SELECT * FROM DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 100 | 200 |
| 500 | 600 |
+--------+--------+
2 rows in set (0.00 sec)

열을 행으로 결합하는 쿼리

이제 UNION ALL을 사용해 두 개의 열(Value1, Value2)을 하나의 행 목록으로 변환해 보겠습니다.

mysql> SELECT Value1 FROM DemoTable
-> UNION ALL
-> SELECT Value2 FROM DemoTable;

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

+--------+
| Value1 |
+--------+
| 100 |
| 500 |
| 200 |
| 600 |
+--------+
4 rows in set (0.00 sec)

참고 사항

UNION 대신 UNION ALL을 사용하면 중복 검사 과정을 생략하기 때문에 성능 면에서 더 유리합니다. 만약 중복된 값을 제거하고 싶다면 UNION ALL 대신 일반 UNION을 사용하면 됩니다. 또한 각 SELECT 문에서 선택하는 열의 개수와 데이터 타입이 서로 호환되어야 정상적으로 동작한다는 점도 기억해 두세요.