MySQL에서는 GROUP_CONCAT() 함수를 사용하면 여러 행의 데이터를 쉼표로 구분된 하나의 목록으로 손쉽게 표시할 수 있습니다. 이번 글에서는 실제 예제를 통해 GROUP_CONCAT() 함수의 사용법을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Value int
);
Query OK, 0 rows affected (0.26 sec)
2. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.06 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.06 sec) mysql> insert into DemoTable values(40); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable values(50); Query OK, 1 row affected (0.07 sec)
3. 저장된 레코드 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------+ | Value | +-------+ | 10 | | 20 | | 30 | | 40 | | 50 | +-------+ 5 rows in set (0.00 sec)
4. GROUP_CONCAT()으로 쉼표로 구분된 값 표시하기
이제 열의 데이터를 쉼표로 구분하여 한 줄로 표시하는 쿼리입니다. GROUP_CONCAT() 함수 안에 대상 열을 지정하면 됩니다.
mysql> SELECT GROUP_CONCAT(Value) FROM DemoTable;
실행 결과는 다음과 같습니다.
+---------------------+ | GROUP_CONCAT(Value) | +---------------------+ | 10,20,30,40,50 | +---------------------+ 1 row in set (0.00 sec)
결과를 보면 각 행에 나뉘어 있던 값들이 10,20,30,40,50처럼 쉼표로 구분된 단일 문자열로 출력된 것을 확인할 수 있습니다.
참고: 구분자 변경 및 정렬 옵션
GROUP_CONCAT()는 기본적으로 쉼표(,)를 구분자로 사용하지만, SEPARATOR 절을 이용해 원하는 구분자로 변경할 수도 있습니다. 또한 ORDER BY 절을 함께 사용하면 결과값을 정렬한 상태로 연결할 수 있습니다.
mysql> SELECT GROUP_CONCAT(Value ORDER BY Value ASC SEPARATOR '-') FROM DemoTable;
위 쿼리는 값을 오름차순으로 정렬한 후 하이픈(-)으로 연결하여 10-20-30-40-50 형태로 출력합니다. 이처럼 GROUP_CONCAT() 함수를 활용하면 목록 형태의 데이터를 다양한 방식으로 가공하여 표시할 수 있습니다.