用MySQL创建循环排列的优雅方式

时间:2012-04-18 12:49:16

标签: mysql sql permutation

我得到了一组这样的结果:

| id |
| 1  |
| 2  |
| 3  |
| 4  |

我想要

| id |
| 4  |
| 1  |
| 2  |
| 3  |

使用SQL脚本是否有任何优雅的方法来实现这一目标?

2 个答案:

答案 0 :(得分:6)

您可以使用mod运算符%ORDER BY

DECLARE @maxId AS INT
SELECT @maxId = MAX(Id) FROM MyTable

SELECT id FROM MyTable
ORDER BY Id % @maxId 

您可以通过添加到ID来进一步轮换,即

ORDER BY (Id + 1) % @maxId

告诉你

3
4
1
2

工作SQL小提琴(我刚发现它存在) http://sqlfiddle.com/#!3/a7f15/5

答案 1 :(得分:0)

好的,我会抓住SQL。

select case when id > 3 then 0
       else 1
       end
, id
from mytable
order by 1,2