2011-10-18 70 views
15

如果我有:爲mysql查詢顯式指定排序順序?

ID | Title 
1 | Shirt 
2 | CD 
3 | Cap 
4 | Mp3 
5 | Badge 

如果我想這個順序排序:4,2,5,3,1。有沒有辦法做一個SQL查詢,你明確指定這個?喜歡的東西:

select * from TABLE order by ID(4,2,5,3,1) ?? 
+0

您如何介紹一個「職位」列,並按照您的要求排列項目並查詢按職位排序的行?依靠ID-s訂購東西只是......愚蠢的。 –

回答

22

其實,你是驚人地接近。這是一個簡單的:

select * from TABLE order by field(ID,4,2,5,3,1) 
+1

不錯,是MySQL特有的? –

+1

@ muistooshort是的 - 它更多的是mysql「funk」,但所有那些「不符合標準」的東西都非常方便,太難抵擋了! – Bohemian

4

可以在ORDER使用CASE BY作爲一個基本的查找表:

select * 
from your_table 
order by 
    case id 
     when 4 then 1 
     when 2 then 2 
     when 5 then 3 
     when 3 then 4 
     when 1 then 5 
    end 
2
select * from TABLE order by ID=1,ID=3,ID=5,ID=2,ID=4; 

運行此,讓我知道你的懷疑。

+6

你正在以你的方式銷燬。 – smathy