【发布时间】:2012-06-04 05:32:21
【问题描述】:
我有一张只有数字 ID 的表格
ID
1
2
3
4
5
6
7
8
9
10
我想将这个 id 分解并连接(分组)成 5 或 20 的组,ej。
GROUPS
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
如何使用 SQL 做到这一点?
更新:
带有排序 ID 的选择
SELECT GROUP_CONCAT(id ORDER BY id) AS GROUPS
FROM `test`
GROUP BY (id - 1) DIV 5
结果:
GROUPS
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18,19,20
21,22,23,24,25
26,27,28,29,30
31,32,33,34,35
选择第二个未排序的表
SELECT GROUP_CONCAT(id ORDER BY id) AS GROUPS
FROM `test2`
GROUP BY (id - 1) DIV 5
结果:
GROUPS
3,5
10
12
16
23,24,25
32,35
43,44
47
55
61
68,70
77
84
89
91,92,95
97,100
【问题讨论】:
-
您使用的是哪个 RDBMS?您是否希望将这些值放在一个带有
nID 的列中,用逗号分隔? -
ID 是否保证从 1 开始无间隙?
-
第一个答案就像一个魅力,但只有当 id 被排序并且没有 id 丢失时,这不是我的情况:
-
不,不能保证 id 没有间隙,我想必须有一种方法可以按项目的 count() 进行分组,或者在具有相关数字的 select 上创建一个额外的列.
标签: mysql sql group-by concatenation break