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

MySQL에서 GROUP BY로 문자열 연결하기: GROUP_CONCAT() 함수와 SEPARATOR 구분 기호 설정 방법

MySQL에서 GROUP BY와 함께 문자열을 연결하려면 GROUP_CONCAT() 함수를 사용해야 합니다. 이때 SEPARATOR 매개변수를 지정하면 콤마(','), 공백(' ') 등 원하는 구분 기호를 자유롭게 설정할 수 있습니다.

기본 문법

SELECT yourColumnName1, GROUP_CONCAT(yourColumnName2 SEPARATOR 'yourValue') AS anyVariableName FROM yourTableName GROUP BY yourColumnName1;

예제 테이블 생성

위 문법을 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다:

mysql> create table GroupConcatenateDemo
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.99 sec)

데이터 삽입

INSERT 명령어를 사용하여 테이블에 레코드를 삽입합니다:

mysql> insert into GroupConcatenateDemo values(10,'Larry');
Query OK, 1 row affected (0.41 sec)
mysql> insert into GroupConcatenateDemo values(11,'Mike');
Query OK, 1 row affected (0.18 sec)
mysql> insert into GroupConcatenateDemo values(12,'John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into GroupConcatenateDemo values(10,'Elon');
Query OK, 1 row affected (0.63 sec)
mysql> insert into GroupConcatenateDemo values(10,'Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into GroupConcatenateDemo values(11,'Sam');
Query OK, 1 row affected (0.14 sec)

전체 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다:

mysql> select *from GroupConcatenateDemo;

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

+------+-------+
| Id   | Name  |
+------+-------+
|   10 | Larry |
|   11 | Mike  |
|   12 | John  |
|   10 | Elon  |
|   10 | Bob   |
|   11 | Sam   |
+------+-------+
6 rows in set (0.00 sec)

GROUP BY와 GROUP_CONCAT()으로 문자열 연결하기

이제 Id 컬럼을 기준으로 GROUP BY를 수행하고, GROUP_CONCAT() 함수를 사용하여 각 그룹에 속한 이름들을 하나의 문자열로 연결해 보겠습니다. 쿼리는 다음과 같습니다:

mysql> select Id, group_concat(Name SEPARATOR ',') as GroupConcatDemo from GroupConcatenateDemo
-> group by Id;

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

+------+-----------------+
| Id   | GroupConcatDemo |
+------+-----------------+
|   10 | Larry,Elon,Bob  |
|   11 | Mike,Sam       |
|   12 | John           |
+------+-----------------+
3 rows in set (0.00 sec)

위 결과에서 볼 수 있듯이, 동일한 Id를 가진 이름들이 콤마(',')로 구분되어 하나의 문자열로 연결되었습니다. SEPARATOR 값을 변경하면 공백이나 세미콜론 등 다른 구분 기호도 손쉽게 적용할 수 있으므로, 상황에 맞게 활용하시기 바랍니다.