• 欢迎访问DBA的辛酸事儿,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 欢迎大家关注博主公众号:DBA的辛酸事儿
  • 博文中若有错误的地方,请大家指正,大家的指正是我前进的动力

MySQL使用group by分组后对某个字段值拼接成字符串方法

MySQL SEian.G 7个月前 (01-06) 684次浏览 已收录 0个评论

只需要使用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;

参考链接:
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_group-concat

MySQL使用group by分组后对某个字段值拼接成字符串方法


如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:MySQL使用group by分组后对某个字段值拼接成字符串方法
喜欢 (1)
SEian.G
关于作者:
用心去记录工作,用心去感受生活,用心去学着成长;座右铭:苦练七十二变,笑对八十一难
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址