SQLPathLab
聚合统计 · 进阶

GROUP_CONCAT

将分组内文本合并展示

简介

GROUP_CONCAT 将每个分组中的非 NULL 文本合并为一个字符串,可在函数内部指定 DISTINCT、ORDER BY 和 SEPARATOR。若不指定排序,拼接顺序没有稳定保证;长结果还会受到 MySQL group_concat_max_len 限制,不能把它当成无限容量的数据交换格式。

基础语法

SELECT department, GROUP_CONCAT(name) AS names FROM orders GROUP BY department;

示例

GROUP_CONCAT 示例

示例按 department 分组并拼接姓名;生产写法应在 GROUP_CONCAT 内增加 ORDER BY,使输出顺序可重复。

示例数据表

表名:orders
orders
namedepartment
Alice Sales
Bob IT
Cindy Sales
David HR

运行结果

result
departmentnames
HR David
IT Bob
Sales Alice,Cindy

常见问题

怎样保证 GROUP_CONCAT 内部顺序?

在函数内部明确写 ORDER BY;查询末尾的 ORDER BY 只控制结果行顺序,不控制每组字符串的拼接顺序。

拼接结果为什么可能被截断?

MySQL 受 group_concat_max_len 限制;生产环境应检查当前上限,并避免用超长字符串代替规范的明细结果。

GROUP_CONCAT 会怎样处理 NULL?

NULL 输入通常被忽略;如果一组全部为 NULL,结果为 NULL,可按业务需要配合 COALESCE。

标签

聚合统计

这篇内容是否清楚?