如何在 MySQL 中使用 GROUP BY 拼接字符串,以及如何设置拼接的分隔符?


要在 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 拼接 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)

更新时间: 2019 年 7 月 30 日

9K+ 次观看

启动您的 职业生涯

完成课程,获得认证

开始
广告