2012-04-18 55 views
1

優雅的方式,我得到了這樣一組結果:創建圓形排列與MySQL

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

我試圖讓

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

是否有任何優雅的方式來實現這一目標用一個SQL腳本?

+2

您能否提供其他例子來說明如何訂購結果或更好地描述結果?目前還不清楚你想從這個例子中嘗試做什麼 – 2012-04-18 12:50:18

+0

你是否建議你想在其他一些迭代中使用3,4,1,2? – Randy 2012-04-18 12:52:48

+0

我只是試圖創建一個循環/圓形排列,給定表中的行的偏移​​量爲1。 – caccialdo 2012-04-18 12:54:53

回答

6

可以使用Mod運算符,%ORDER BY

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

SELECT id FROM MyTable 
ORDER BY Id % @maxId 

您可以通過增加顯示得到進一步的旋轉,即

ORDER BY (Id + 1) % @maxId 

讓你

3 
4 
1 
2 

工作SQL小提琴(我剛剛發現) http://sqlfiddle.com/#!3/a7f15/5

+0

太棒了!像魅力一樣工作+你可以指定偏移參數!我不能要求更多 – caccialdo 2012-04-18 13:05:28

0

好的,我會刺殺SQL。

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

用你想要的任何斷點替換3。 – Randy 2012-04-18 13:04:40

+0

感謝您的幫助和專注的時間。 @Bort解決方案雖然看起來更優雅。 – caccialdo 2012-04-18 13:08:03