扫码关注官方订阅号
mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?
数据表有一个id字段,sql的结果集如何根据 25 12 87这样的顺序显示?
id251287
而不是id122587
光阴似箭催人老,日月如移越少年。
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,取出来不就是按这个顺序的了么
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
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,取出来不就是按这个顺序的了么