如何使用SELECT WHERE IN()保持订单?

时间:2010-05-11 19:37:49

标签: sql mysql database sql-order-by

使用SELECT WHERE IN()时是否有办法保持顺序?例如,使用以下查询:

SELECT id FROM data_table WHERE id IN(56,55,54,1,7);

结果将使用id的默认顺序返回。 1,7,54,55,56

当我想保留IN中使用的顺序时:56,55,54,1,7

在mySQL中有没有快速的方法可以做到这一点,或者我会被迫在代码中订购它。

谢谢:)

3 个答案:

答案 0 :(得分:40)

使用FIND_IN_SET

ORDER BY FIND_IN_SET(id, '56,55,54,1,7')

答案 1 :(得分:3)

答案 2 :(得分:0)

你可以做一个UNION,它可能会以同样的方式返回订单。

BUT:

为什么不让您的应用程序在收到结果时重新排序结果,而不是强制数据库执行此操作?