2011-10-18 34 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