只需要使用GROUP_CONCAT函数可以在使用groupby分组后,将某个字段的值进行拼接合并
示例:
mysql--dba_admin@127.0.0.1:test 12:38:31>>select * from student;
+----+-----------------+--------+
| id | class | name |
+----+-----------------+--------+
| 1 | 一年级一班 | 张三 |
| 2 | 一年级一班 | 李四 |
| 3 | 一年级一班 | 王五 |
| 4 | 一年级二班 | 测试 |
| 5 | 一年级二班 | 张思 |
+----+-----------------+--------+
5 rows in set (0.00 sec)
mysql--dba_admin@127.0.0.1:test 12:40:13>>select class,group_concat(name) from student group by class;
+-----------------+----------------------+
| class | group_concat(name) |
+-----------------+----------------------+
| 一年级一班 | 张三,李四,王五 |
| 一年级二班 | 测试,张思 |
+-----------------+----------------------+
2 rows in set (0.00 sec)
当然,还能自定义分隔符,在字段后面加上SEPARATOR ‘&’
mysql--dba_admin@127.0.0.1:test 12:40:17>>select class,group_concat(name SEPARATOR '&') from student group by class;
+-----------------+----------------------------------+
| class | group_concat(name SEPARATOR '&') |
+-----------------+----------------------------------+
| 一年级一班 | 张三&李四&王五 |
| 一年级二班 | 测试&张思 |
+-----------------+----------------------------------+
2 rows in set (0.00 sec)
注意事项:GROUP_CONCAT函数要配合group by才能发挥作用哦
1、使用语法及特点:
GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])
在 MySQL 中,你可以得到表达式结合体的连结值。通过使用 DISTINCT 可以排除重复值。如果希望对结果中的值进行排序,可以使用 ORDER BY 子句,若要按相反顺序排序,请在ORDERBY子句中将DESC(降序)关键字添加到要排序的列的名称中,默认为升序。
SEPARATOR 是一个字符串值,它被用于插入到结果值中。缺省为一个逗号 (“,”),可以通过指定 SEPARATOR “” 完全地移除这个分隔符。
可以通过变量 group_concat_max_len 设置一个最大的长度,该系统变量的默认值为1024。
在运行时执行的句法如下:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大长度被设置,结果值被剪切到这个最大长度。
如果分组的字符过长,可以对系统参数进行设置:SET @@global.group_concat_max_len=40000;
如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:MySQL使用group by分组后对某个字段值拼接成字符串方法