Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

GROUP BY를 사용하여 MySQL에서 문자열을 연결하는 방법과 연결에 대한 구분 기호를 설정하는 방법은 무엇입니까?

<시간/>

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)