mysql之group_concat函数

在介绍GROUP_CONCAT之前,我们先来看看concat()函数和concat_ws()函数。

先准备一个测试数据库:

mysql> select * from scores;
+----+----------+-------+
| id | name     | score |
+----+----------+-------+
|  1 | zhangsan | 100   |
|  2 | lisi     | 90    |
|  3 | wangwu   | 99    |
|  4 | zhangsan | 92    |
|  5 | zhangsan | 88    |
|  6 | lisi     | 89    |
+----+----------+-------+
6 rows in set

1. concat()函数

concat()函数的功能是将多个字符连接成一个字符串。

语法: concat(str1, str2,...)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

2. concat_ws()函数

concat()函数加分隔符比较麻烦,如果有10个字段连接起来,就得写9个分隔符,concat_ws()函数就是为了解决这个问题。concat_ws就是concat with separator。

语法: concat_ws(separator, str1, str2, ...)

第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

3. group_concat函数

明白了concat()和concat_ws()函数,我们来看一下GROUP_CONCAT()函数。它的功能就是将group by产生的同一个分组中的值连接起来,返回一个字符串结果。如果单独使用,那么就将指定字段所有的值连接起来。

语法:

说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

我们知道可以使用group by语句对结果进行分组处理:

但是我们只能看到zhangsan的第一个成绩,如果我想看到所有的成绩呢?

参考:

https://blog.csdn.net/mary19920410/article/details/76545053

Last updated

Was this helpful?