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 に答える