You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中按分组获取路径?附示例数据与预期结果

在MySQL中按分组拼接路径的解决方案

刚好做过类似需求!要实现你要的效果,关键是用MySQL自带的GROUP_CONCAT()聚合函数,同时指定按id排序来保证place的顺序和原始数据一致,具体步骤如下:

1. 先确认你的表结构与数据

假设你的表名为your_table,原始数据如下:

idgroupplace
11a
21b
31b
41a
51c
62a
72b
82c

2. 实现分组拼接的SQL语句

直接用GROUP_CONCAT()配合ORDER BY和SEPARATOR参数就能搞定:

SELECT 
  `group`,
  GROUP_CONCAT(place ORDER BY id SEPARATOR '-') AS path
FROM your_table
GROUP BY `group`;

关键参数说明:

  • GROUP_CONCAT(place ORDER BY id):按id的升序排列每个分组内的place值,保证拼接顺序和原始数据一致
  • SEPARATOR '-':指定用连字符-作为拼接的分隔符,默认是逗号,所以需要显式指定
  • 注意group是MySQL的关键字,所以要用反引号`包裹避免语法错误

3. 执行后的预期结果

运行上面的SQL后,就能得到符合预期的结果:

grouppath
1a-b-b-a-c
2a-b-c

(哦对了,你给出的预期结果里group1的path是a-b-a-c,但原始数据里id3的place是b,所以实际结果应该是a-b-b-a-c,可能是笔误啦😉)

注意事项

如果你的分组内的place数量很多,拼接后的字符串长度超过group_concat_max_len的默认值(一般是1024字节),会被截断。可以临时修改这个参数:

SET SESSION group_concat_max_len = 10240; -- 临时设置为10KB,仅当前会话有效

内容的提问来源于stack exchange,提问作者dajiao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:39:07