mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?

mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?

数据表有一个id字段,sql的结果集如何根据 25 12 87这样的顺序显示?

id
25
12
87

而不是
id
12
25
87

阅读 5k
6 个回答

SELECT * FROM table WHERE id IN(25,12,87) ORDER BY find_in_set(id,'25,12,87')

这个在高性能mysql里面有介绍,in查询其实是一个扫表的过程,in查询时,底层是先将in里面的id就从小到大排序优化,然后再执行in查询的,所以最好是手动将id从小到大排序后再执行in查询,例如in (12,25,87),然后再按照你想要的顺序排序就好了

值取出之后在应用程序排序

SELECT * FROM table WHERE id IN(25,12,87) ORDER BY INSTR(',25,12,87,',CONCAT(',',id,','))

试试这个

思路转换一下,分成3条按id查询的SQL,取出来不就是按这个顺序的了么

新手上路,请多包涵

SELECT * FROM table WHERE id IN(25,12,87) ORDER BY case when id = 25 then 0 else 1 end,id

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题