按IN排序行

时间:2015-04-02 11:41:25

标签: mysql

我有一个mysql查询

SELECT collateral.*
FROM collateral
WHERE collateral.id IN (85,565,32,33)

我是否可以将查询结果输出到ORDER BY IN值,而不是ASC,这似乎是默认值?

默认情况下,查询按以下顺序输出结果

row    id
---------
1      32
2      33
3      85
4     565

我想要实现的是根据IN

中值的顺序排序
row    id
---------
1      86
2     565
3      32
4      33

由于

2 个答案:

答案 0 :(得分:1)

您可以使用order by field

WHERE collateral.id IN (85,565,32,33)
order by field(collateral.id ,85,565,32,33) 

答案 1 :(得分:0)

对于缺少"字段"的数据库(或类似的)功能答案是

WHERE collateral.id IN (85,565,32,33)
ORDER BY CASE 
   WHEN collateral.id = 85  THEN 1
   WHEN collateral.id = 565 THEN 2
   WHEN collateral.id = 32  THEN 3
   WHEN collateral.id = 33  THEN 4
END

对于MySql使用@Abhik回答