MySQL의 문자열을 GROUP BY와 연결하려면 쉼표(') 또는 공백(' ') 등이 될 수 있는 SEPARATOR 매개변수와 함께 GROUP_CONCAT()을 사용해야 합니다.
구문은 다음과 같습니다.
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)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 레코드를 삽입하는 쿼리는 다음과 같습니다.
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를 사용하여 MySQL에서 문자열을 연결하는 쿼리입니다. Id를 기준으로 GROUP BY를 수행하고 MySQL에서 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)