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

MySQL GROUP_CONCAT()로 여러 행의 데이터를 한 행으로 합치는 방법

MySQL에서 여러 행에 나눠져 있는 값들을 하나의 행으로 합쳐서 조회하고 싶을 때가 있습니다. 이럴 때 GROUP_CONCAT() 함수를 사용하면 간단하게 해결할 수 있습니다. 이번 글에서는 실제 예제를 통해 GROUP_CONCAT() 함수의 사용법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1355
-> (
-> Location text
-> );
Query OK, 0 rows affected (0.57 sec)

2. 데이터 삽입하기

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable1355 values('E:');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1355 values('AllPrograms');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1355 values('ChatApplicationInJava');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable1355 values('MainFolder');
Query OK, 1 row affected (0.23 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1355;

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

+-----------------------+
| Location |
+-----------------------+
| E: |
| AllPrograms |
| ChatApplicationInJava |
| MainFolder |
+-----------------------+
4 rows in set (0.00 sec)

현재 4개의 값이 각각 별도의 행으로 저장되어 있는 것을 확인할 수 있습니다.

4. GROUP_CONCAT()으로 한 행으로 합치기

이제 모든 항목을 하나의 행으로 반환하는 쿼리를 작성해 보겠습니다. separator 옵션을 사용하면 값들을 연결할 때 원하는 구분자를 지정할 수 있습니다.

mysql> select group_concat(Location separator '/') from DemoTable1355;

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

+-------------------------------------------------+
| group_concat(Location separator '/') |
+-------------------------------------------------+
| E:/AllPrograms/ChatApplicationInJava/MainFolder |
+-------------------------------------------------+
1 row in set (0.00 sec)

정리

GROUP_CONCAT() 함수는 여러 행의 문자열 값을 하나의 문자열로 결합해 주는 강력한 집계 함수입니다. separator 옵션을 활용하면 '/'처럼 경로 형태나 쉼표(,) 등 다양한 구분자로 값을 연결할 수 있어, 폴더 경로 표현이나 목록 형태의 출력 등에 유용하게 활용됩니다.