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

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

我想得到
| id |
| 4  |
| 1  |
| 2  |
| 3  |

有没有什么优雅的方法可以使用SQL脚本来实现这一点?

最佳答案

您可以使用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

09-30 17:08