mysql使用group_concat拼接

关键字说明

GROUP_CONCAT 是一个在关系型数据库中常见的函数,用于将查询结果中的多行数据合并成一行,并以特定的分隔符分隔每个值。它通常与 GROUP BY 结合使用,用于聚合数据并将每个组内的值连接起来

示例说明

假设有一个表 students 包含以下数据:

id name course
1 Alice Math
2 Bob History
3 Alice English
4 Bob Math
5 Carol Physics

示例 1: 简单的 GROUP_CONCAT 使用

查询每个学生所修的课程,并将其连接成一个逗号分隔的列表

sql 复制代码
SELECT name, GROUP_CONCAT(course ORDER BY course SEPARATOR ', ') AS courses
FROM students
GROUP BY name;

结果将是:

name courses
Alice English, Math
Bob History, Math
Carol Physics

在这个例子中,GROUP_CONCAT(course ORDER BY course SEPARATOR ', ') 将每个学生所修的课程按字母顺序排序,并用逗号加空格分隔起来。

示例 2: 使用 DISTINCT 选项

如果想要确保每个学生的课程列表中没有重复的课程:

sql 复制代码
SELECT name, GROUP_CONCAT(DISTINCT course ORDER BY course SEPARATOR ', ') AS courses
FROM students
GROUP BY name;

结果将是:

name courses
Alice English, Math
Bob History, Math
Carol Physics

DISTINCT 关键字确保在连接过程中每个课程只出现一次。

示例 3: 自定义分隔符

假设希望使用竖线 | 作为分隔符:

sql 复制代码
SELECT name, GROUP_CONCAT(course ORDER BY course SEPARATOR ' | ') AS courses
FROM students
GROUP BY name;

结果将是:

name courses
Alice English
Bob History
Carol Physics

场景和应用

  • 标签系统: 将多个标签关联到一篇文章或者一个产品上。
  • 报表生成: 将多行数据聚合成单行,便于生成汇总报表。
  • 数据导出: 将多个字段的值合并成一个字段,便于导出到其他系统或者文件中。

总结来说,GROUP_CONCAT 在需要将多行数据合并成单行,并用特定分隔符分隔每个值时非常有用,特别是在处理具有一对多关系的数据时。

相关推荐
三言老师6 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
旺仔学长 哈哈7 小时前
Spring Boot 智能停车场管理系统---附源码+数据库文档
数据库·spring boot·后端·智能停车场
ClickHouseDB7 小时前
ClickHouse托管Postgres:OLTP+OLAP,新能力解锁最佳数据平台
java·前端·数据库
数智化管理手记8 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌8 小时前
MongoDB 4.2——选择片键
数据库·mongodb
天天进步一点点8 小时前
QSqlQuery删除sqlite数据库执行drop数据表报错database table is locked unable to fetch row问题
数据库·oracle·sqlite
音视频工程实战9 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法
清川渡水9 小时前
NL2SQL 的正确打开方式:从「AI 猜 SQL」到「置信度闭环」的工程化落地
数据库·人工智能·sql
TDengine (老段)9 小时前
TDengine Go 与 Rust 连接器 — 高性能异步访问
大数据·数据库·物联网·golang·rust·时序数据库·tdengine
东方佑10 小时前
MA-RMSNorm:打破“缩放换智能”的魔咒,大模型归一化的一次范式革命!
数据库·人工智能·计算机视觉