MySQL轮流排序

时间:2016-10-15 14:15:59

标签: mysql sorting sql-order-by

我想按照下面列出的顺序对以下数据项进行排序:

id | res
--------
1     A
2     A
3     A
4     A
5     A
6     B
7     B
8     B
9     B
10    B
11    C
12    C
13    C
14    C
15    C

我希望输出是:

res
---
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C

有什么技巧让它更合适吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以按组内的“排名”排序。可以使用自联接计算排名,并使用较小的ID计数条目。

select t1.id, t1.res
from mytable t1
join mytable t2
  on  t2.res = t1.res
  and t2.id <= t1.id
group by t1.id, t1.res
order by count(*), t1.res

http://rextester.com/ICHZNN18920