使用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中有没有快速的方法可以做到这一点,或者我会被迫在代码中订购它。
谢谢:)
答案 0 :(得分:40)
使用FIND_IN_SET:
ORDER BY FIND_IN_SET(id, '56,55,54,1,7')
答案 1 :(得分:3)
您还可以使用FIELD:
ORDER BY FIELD(id, '56,55,54,1,7')
答案 2 :(得分:0)
你可以做一个UNION,它可能会以同样的方式返回订单。
BUT:
为什么不让您的应用程序在收到结果时重新排序结果,而不是强制数据库执行此操作?