1

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

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

我试图得到

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

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

4

2 回答 2

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 Fiddle(我刚刚发现存在) http://sqlfiddle.com/#!3/a7f15/5

于 2012-04-18T13:00:28.997 回答
0

好的,我会在 SQL 上试一试。

select case when id > 3 then 0
       else 1
       end
, id
from mytable
order by 1,2
于 2012-04-18T13:00:33.100 回答