SQL小提琴:http://sqlfiddle.com/#!9/e7f72/2
假设一个名为testt的表中有10条记录(id不是null自动递增)。如果我要做
SELECT GROUP_CONCAT(id) FROM testt
我希望结果看起来像
1,2,3,4,5,6,7,8,9,10
我怎么能把结果看起来像这样:
1,2
3,4
5,6
7,8
9,10
答案 0 :(得分:4)
您需要按id
的功能进行分组。像这样:
select group_concat(id order by id)
from testt
group by floor((id - 1) / 2)
答案 1 :(得分:3)
如果有人遇到这个问题,但是需要它在一个非顺序的id列上工作,这就是解决方案。
在下面的查询中, test 是包含非顺序id列的表名。如果已经选择了数据库, Dbname 是可选的。
SELECT
GROUP_CONCAT(id ORDER BY id ASC) AS "ids"
FROM
(
SELECT
@row := @row +1 AS rownum, id
FROM
(
SELECT @row :=0
) r, Dbname.test
) ranked
GROUP BY
FLOOR((rownum - 1) / 2);
如果您的表格如下所示:
id
1
2
3
4
10
15
17
18
20
21
23
25
32
55
105
1011
1012
1013
1014
1111
1112
1113
1114
1115
1116
1117
1118
1119
2001
2002
2003
以上查询将给出如下结果:
ids
1,2
3,4
10,15
17,18
20,21
23,25
32,55
105,1011
1012,1013
1014,1111
1112,1113
1114,1115
1116,1117
1118,1119
2001,2002
2003
最后,如果你改变了这一行
FLOOR((rownum - 1) / 2);
到
FLOOR((rownum - 1) / 3);
结果是这样的:
ids
1,2,3
4,10,15
17,18,20
21,23,25
32,55,105
1011,1012,1013
1014,1111,1112
1113,1114,1115
1116,1117,1118
1119,2001,2002
2003
希望有人帮助。