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

MySQL에서 CREATE TABLE AS SELECT로 다른 테이블의 열을 GROUP BY 처리하는 방법

개요

기존 테이블의 열을 기준으로 GROUP BY를 적용한 결과를 새로운 테이블로 만들고 싶다면, MySQL의 CREATE TABLE AS SELECT 구문을 활용하면 됩니다. 이 구문은 SELECT 쿼리의 실행 결과를 그대로 새 테이블에 저장해 주기 때문에, 중복 제거나 데이터 정리 작업을 매우 간편하게 처리할 수 있습니다.

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

mysql> create table DemoTable1
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CountryName varchar(20)
-> );
Query OK, 0 rows affected (0.68 sec)

insert 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable1(CountryName) values('US');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable1(CountryName) values('UK');
Query OK, 1 row affected (0.27 sec)

mysql> insert into DemoTable1(CountryName) values('AUS');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable1(CountryName) values('UK');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable1(CountryName) values('UK');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable1(CountryName) values('US');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable1(CountryName) values('AUS');
Query OK, 1 row affected (0.10 sec)

select 문으로 테이블의 전체 레코드를 확인해 보겠습니다.

mysql> select *from DemoTable1;

출력 결과

+----+-------------+
| Id | CountryName |
+----+-------------+
| 1 | US |
| 2 | UK |
| 3 | AUS |
| 4 | UK |
| 5 | UK |
| 6 | US |
| 7 | AUS |
+----+-------------+
7 rows in set (0.00 sec)

위 결과에서 볼 수 있듯이 'US', 'UK', 'AUS' 값이 여러 번 중복되어 저장되어 있습니다. 이제 CountryName 열을 기준으로 GROUP BY 처리한 결과를 새 테이블(DemoTable2)로 생성하는 쿼리를 살펴보겠습니다.

mysql> create table DemoTable2 AS select *from DemoTable1 group by CountryName;
Query OK, 3 rows affected (0.79 sec)
Records: 3 Duplicates: 0 Warnings: 0

새로 생성된 테이블의 레코드를 확인합니다.

mysql> select *from DemoTable2;

출력 결과

+----+-------------+
| Id | CountryName |
+----+-------------+
| 1 | US |
| 2 | UK |
| 3 | AUS |
+----+-------------+
3 rows in set (0.00 sec)

실행 결과를 보면 중복이 제거되어 각 국가명이 한 번씩만 저장된 것을 확인할 수 있습니다. 이처럼 CREATE TABLE ... AS SELECTGROUP BY를 함께 사용하면 기존 테이블의 데이터를 특정 열 기준으로 그룹화하여, 중복 없는 깔끔한 새 테이블로 손쉽게 추출할 수 있습니다.