我需要使用单个查询将一个表排序成一个顺序,其中有三个偶数批排序的记录.
下面是一个示例表.
id value
1 356
2 243
3 321
4 123
5 654
6 222
7 102
8 900
9 489
一个简单的ORDER BY value DESC
就能产生
id value
8 900
5 654
9 489
1 356
3 321
2 243
6 222
4 123
7 102
然而,我需要的是这个列表被分成三个相等的部分,就像这样(为了清楚起见,增加了空行)……
id value
8 900
1 356
6 222
5 654
3 321
4 123
9 489
2 243
7 102
如果我可以在初始排序中添加一个假想的临时帮助器列,如下所示(请注意,这个帮助器列实际上并不存在于我的表中,我在这里添加它只是为了帮助说明这个问题)……
id value helper
8 900 1
5 654 2
9 489 3
1 356 1
3 321 2
2 243 3
6 222 1
4 123 2
7 102 3
我可以用ORDER BY helper, value
英镑买到我想要的那种……
id value helper
8 900 1
1 356 1
6 222 1
5 654 2
3 321 2
4 123 2
9 489 3
2 243 3
7 102 3
但是,同样,Helper列是虚构的,我的表中并没有它.考虑到表中的数据,我不知道如何从单个查询中获得这个结果.如果你有任何提示,我将不胜感激.
如果可以对解决方案进行泛化,以便可以创建任意数量的批处理,那将是最好的.它们的大小不必完全相同,在记录总数不均匀地划分为批大小的情况下,它们的长度可能相差一.