在MySQL中,GROUP_CONCAT 是一个非常实用的聚合函数,它可以将分组中的多行文本合并成一个字符串。当你需要将某个字段的多个值拼接在一起时,比如把一个用户的所有标签、订单项或类别连成一行显示,这个函数就特别有用。
基本语法
GROUP_CONCAT(expression SEPARATOR separator)
expression:要拼接的字段或表达式 SEPARATOR:指定连接符,默认是逗号 ,例如,有一个文章标签表:
1
2
3
4
5
6
article_id | tag
———–|——–
1 | MySQL
1 | Database
2 | Python
2 | Web
你想按文章ID汇总所有标签:
SELECT article_id, GROUP_CONCAT(tag) AS tags
FROM article_tags
GROUP BY article_id;结果会是:
1
2
3
4
article_id | tags
———–|——————-
1 | MySQL,Database
2 | Python,Web
自定义分隔符
你可以使用 SEPARATOR 指定其他连接符号:
SELECT article_id, GROUP_CONCAT(tag SEPARATOR | ) AS tags
FROM article_tags
GROUP BY article_id;输出:
1
2
1 | MySQL | Database
2 | Python | Web
去重与排序
如果数据中有重复值,可以用 DISTINCT 去重:
SELECT article_id, GROUP_CONCAT(DISTINCT tag ORDER BY tag) AS tags
FROM article_tags
GROUP BY article_id; DISTINCT 避免重复标签 ORDER BY 控制拼接顺序处理长文本截断问题
GROUP_CONCAT 有长度限制,默认是 1024 字符。如果拼接内容太长,会被截断。
可以通过设置系统变量来扩大上限:
SET SESSION group_concat_max_len = 10000;建议在查询前设置,避免影响全局配置。
基本上就这些。GROUP_CONCAT 简单但强大,适合报表汇总、导出数据等场景,合理使用能让查询结果更直观。
以上就是如何在mysql中使用GROUP_CONCAT聚合文本的详细内容,更多请关注php中文网其它相关文章!


