2016-01-13 16 views
1

按時間結束則可以說我有如下表:MySQL的:特定項目是第一個,然後剩下的時間順序進行排序,從開始

friends 
_______ 

id name 
1  johnny 
2  tam 
3  slick 
4  mat 
5  Rhanda 
6  Tommy 
7  ike 
8  Spencer 
9  Alan 

我想所有的朋友列表,但我想要的ID 5是列表中的第一項。我希望下一個項目按照時間順序進行,直到最後。然後,列表從頭開始,直到返回所有結果。因此,它應該這樣結束......

friends 
_______ 

id name 
5  Rhanda 
6  Tommy 
7  ike 
8  Spencer 
9  Alan 
1  johnny 
2  tam 
3  slick 
4  mat 

我發現和試過,但你可以想像它只是返回的第一個項目,然後從1訂購休息。我已經搜索了這個工作了2天,真的可以使用一些幫助。有什麼建議麼?

回答

1

您可以使用:

order by (id >= 5) desc, id 

這使得所有ID大於或等於5首。然後按升序對每個部分進行排序。

MySQL將布爾表達式視爲整數上下文中的整數,其中0代表假,1代表真。因此,要將真實值置於第一位,需要desc

+0

謝謝!它的工作原理與我需要的一樣...但是我不明白爲什麼......它應該是asc而不是desc。如果你能進一步幫助我理解這一點,我當然會感激它! – Jay

1

您可以添加表情訂購條款是這樣的:

select id, name from table 
order by 
     case when id >= 5 then 0 else 1 end 
     , id 
+0

我試過這個,但我無法得到它的工作......是隻有這個SQL?我正在使用mysql,它的語法有一些問題。 – Jay

+0

在MySQL 5.6上測試http://sqlfiddle.com/#!9/dcb16/28405/0 – vasja

相關問題