当前位置:首页 > 问答 > 正文

MySQL函数|数据聚合 教您如何使用MySQL group_concat函数

📊 MySQL魔法课堂:玩转GROUP_CONCAT数据聚合函数

2025年8月最新动态:MySQL 8.4版本优化了GROUP_CONCAT性能,默认排序速度提升30%!现在处理百万级数据拼接更流畅了~


🔍 什么是GROUP_CONCAT?

这个函数是MySQL里的"数据胶水"🧴,能把多行数据粘成一行显示,比如把全班同学的名字合并成「张三,李四,王五」这样的字符串,超适合做报表统计!

-- 基础语法
SELECT 
    GROUP_CONCAT(字段名 SEPARATOR '分隔符')
FROM 表名
GROUP BY 分组字段;

🎯 5个实战用法(含代码)

案例1:基础拼接

把订单里的商品名称合并显示:

SELECT 
    order_id,
    GROUP_CONCAT(product_name) AS products
FROM orders
GROUP BY order_id;

👉 输出效果:

MySQL函数|数据聚合 教您如何使用MySQL group_concat函数

10086 | 手机,耳机,充电宝

案例2:自定义分隔符

用「|」代替默认逗号:

GROUP_CONCAT(product_name SEPARATOR ' | ')

案例3:去重拼接

只保留不重复的城市名:

SELECT 
    GROUP_CONCAT(DISTINCT city)
FROM customers;

案例4:排序后再拼接

按字母倒序排列用户名:

GROUP_CONCAT(username ORDER BY username DESC)

案例5:配合CONCAT加工

给每个值加前缀:

MySQL函数|数据聚合 教您如何使用MySQL group_concat函数

GROUP_CONCAT(CONCAT('ID:', user_id) SEPARATOR '; ')

⚠️ 避坑指南

  1. 长度限制🔒:默认1024字节,超长会被截断

    SET SESSION group_concat_max_len = 1000000;
  2. NULL值处理:如果有NULL值,整个结果会变NULL

    GROUP_CONCAT(IFNULL(字段,''))
  3. 性能注意:大数据量时建议先过滤再拼接


💡 创意应用场景

  • 生成CSV格式数据
  • 动态构造SQL语句
  • 用户兴趣标签合并
  • 多层级分类路径展示

📌 小测验

猜猜这个查询结果是什么?

MySQL函数|数据聚合 教您如何使用MySQL group_concat函数

SELECT GROUP_CONCAT(LEFT(name,1)) 
FROM (SELECT 'Alice' name UNION SELECT 'Bob') t;

(答案:A,B)

发表评论