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

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

3ee62fbdbd294952ea971c2167becd8a.png

如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。

转载请注明原文链接:MySQL使用group by分组后对某个字段值拼接成字符串方法

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值