MySQL 分组拼接 ID:每组 170 个,最多 150 组
可以使用 MySQL 的 GROUP BY 和 GROUP_CONCAT 函数来实现。
假设需要对表中的 'id' 列进行分组,每组最多包含 170 个 'id',最多分成 150 组,可以使用如下语句:
SELECT GROUP_CONCAT(id) as ids
FROM 表名
GROUP BY FLOOR((ROW_NUMBER() OVER () - 1) / 170)
HAVING FLOOR((ROW_NUMBER() OVER () - 1) / 170) < 150;
其中,ROW_NUMBER() OVER () 是 MySQL 8.0 版本以上的新特性,用于生成行号。FLOOR((ROW_NUMBER() OVER () - 1) / 170) 用于将行号分组,每组包含 170 行。
GROUP_CONCAT 函数用于将每组的 'id' 拼接成字符串,别名为 'ids'。
HAVING 语句用于限制分组最多 150 组。
注意,在 MySQL 8.0 以下版本中,可以通过变量模拟 ROW_NUMBER() OVER () 函数的效果,具体方法可以参考以下文章:
https://www.mysqltutorial.org/mysql-row_number/
原文地址: https://www.cveoy.top/t/topic/ozBH 著作权归作者所有。请勿转载和采集!