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 옵션을 활용하면 '/'처럼 경로 형태나 쉼표(,) 등 다양한 구분자로 값을 연결할 수 있어, 폴더 경로 표현이나 목록 형태의 출력 등에 유용하게 활용됩니다.