MySQL 8.0(DBFiddle)中如何按分组合并字段值?
解决方案:使用MySQL原生的
GROUP_CONCAT()函数 你之前尝试的STRING_AGG是SQL Server、PostgreSQL等数据库的专属函数,XML拼接也是SQL Server的实现逻辑,MySQL并不支持这些方法。在MySQL 8.0(包括DBFiddle上的运行环境)中,实现同组字符串聚合的正确方式是使用原生的GROUP_CONCAT()函数,完全能满足你的需求。
基础实现代码
假设你的表名为your_table,执行以下SQL即可得到目标结果:
SELECT `标题1`, GROUP_CONCAT(`标题2` SEPARATOR ', ') AS `标题2` FROM your_table GROUP BY `标题1`;
可选优化:对合并内容排序
如果需要让合并后的标题2内容按字母顺序排列,可以添加ORDER BY子句:
SELECT `标题1`, GROUP_CONCAT(`标题2` ORDER BY `标题2` SEPARATOR ', ') AS `标题2` FROM your_table GROUP BY `标题1`;
注意事项:处理超长字符串
GROUP_CONCAT默认有1024字节的长度限制,若合并后的字符串超出该长度会被截断。你可以通过会话级参数调整上限:
SET SESSION group_concat_max_len = 1000000; -- 设置为你需要的长度值
内容的提问来源于stack exchange,提问作者Alex Ferry
相关产品推荐
相关产品推荐

