跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL GROUP_CONCAT 函数:将多行数据合并成一行

MySQL GROUP_CONCAT 函数用于聚合多行数据为单行字符串。支持 DISTINCT 去重、ORDER BY 排序及自定义分隔符。常用于统计汇总,如订单商品列表。注意 group_concat_max_len 长度限制(默认 1024),可通过 SET SESSION 调整。掌握该函数可简化 SQL 查询,提升数据处理效率。

魔尊发布于 2026/3/23更新于 2026/7/2119K 浏览
MySQL GROUP_CONCAT 函数:将多行数据合并成一行

什么是 GROUP_CONCAT?

GROUP_CONCAT是MySQL中的一种聚合函数,用于将多行的结果集合并成一个单一的字符串,并通过指定的分隔符连接这些值。这个函数通常与GROUP BY一起使用,可以有效地将相关行的信息压缩到单个结果行中。

基本语法

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr} [ASC|DESC][,col_name ...]][SEPARATOR str_val])
  • expr: 要连接的列名或表达式。
  • DISTINCT: 可选参数,用于去除重复值。
  • ORDER BY: 可选参数,用于对值进行排序。
  • SEPARATOR: 指定连接符,默认为逗号,。

使用示例

假设我们有一个名为 students 的表,结构如下:

学生表结构

基本用法

如果我们想获取每个班级的所有学生的名字,可以这样写:

SELECT class, GROUP_CONCAT(name) AS students FROM students GROUP BY class;

输出结果:

查询结果

去重并排序

如果我们想要去除重复的学生名字,并按字母降序排列,可以这样做:

SELECT class, GROUP_CONCAT(DISTINCT name ORDER BY name DESC) AS students FROM students GROUP BY class;

输出结果:

查询结果

高级应用

电商场景示例

在一个电商数据库中,有一个订单表和一个订单详情表。查询每个订单的商品名称列表:

SELECT o.order_id, GROUP_CONCAT(od.product_name SEPARATOR ', ') AS products FROM orders o JOIN order_details od ON o.order_id = od.order_id GROUP BY o.order_id;

这将返回每个订单 ID 及其对应的所有商品名称的列表。

Orders 表 (订单表)

订单表

订单表数据

Order_Details 表 (订单详情表)

详情表

详情表数据

获取每个订单的商品名称列表,可以使用如下 SQL 查询:

SELECT o.order_id, o.customer_name, o.order_date, GROUP_CONCAT(od.product_name SEPARATOR ', ') AS products FROM orders o JOIN order_details od ON o.order_id = od.order_id GROUP BY o.order_id, o.customer_name, o.order_date;

查询结果:

查询结果

注意事项

  • 长度限制:GROUP_CONCAT的最大长度受限于系统变量 group_concat_max_len(默认是 1024 字节)。如果需要,可以通过设置这个变量来调整最大长度:
SET SESSION group_concat_max_len = 1000000;

结论

GROUP_CONCAT是MySQL中一个非常实用的函数,它可以帮助开发者更高效地处理和展示数据。无论是在简单的统计分析还是复杂的数据聚合场景中,GROUP_CONCAT都能提供强大的支持。掌握它的用法和技巧,可以让 SQL 查询更加简洁和功能强大。

目录

  1. 什么是 GROUP_CONCAT?
  2. 基本语法
  3. 使用示例
  4. 基本用法
  5. 去重并排序
  6. 高级应用
  7. 电商场景示例
  8. 注意事项
  9. 结论
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenClaw 安装部署全流程:搭建自托管 AI 助手
  • OpenClaw 接入飞书机器人并集成 Ollama 本地大模型实战
  • 12 款主流 AI 降重工具评测与选择指南
  • OpenClaw QQ 机器人插件安装与配置指南
  • 25 个实用 Prompt 技巧:有效降低 AI 生成内容检测率
  • AI 时代技术民主化:文科生为何成最大受益者
  • GitHub Copilot 学生认证通过指南:2FA 配置与材料提交注意事项
  • 【大模型 】API 对接指南:OpenAI/Claude/LLaMA 3 调用技巧
  • Stable Diffusion WebUI Forge 图像质量评估核心指标解析
  • 软件架构师的核心职责与能力要求
  • C++ 并发模型:内存序、可见性与指令重排
  • 大模型实战技术指南:集群、训练、微调与推理加速
  • 路径类动态规划入门:3 道经典例题全解
  • Floweb 超轻量浮动浏览器功能介绍
  • 基于遗传算法的 LQR 控制器最优设计算法
  • Linux 库制作与原理详解
  • 使用 Claude Code 修改 Jakarta EE 消息队列 Java 代码实战
  • 提升 AI 大模型回答质量的 9 个提示词技巧
  • 大模型时代 Java 程序员如何借助 LangChain4j 构建智能应用
  • OpenClaw 清理 Skill 实战:基于 Rust+Tauri 构建安全沙箱

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online