为什么MySQL的in查询会自动排序
程序员文章站
2022-06-04 09:31:35
...
$id_arr = array(2,6,3,10);//排好序的id列表
$sql = "select user,id from user_member where id in (".implode(",",$id_arr).")";
本来对id排序好了,结果查出来sql会自动对id再排序,怎么能按$id_arr
的顺序显示呢?
回复内容:
$id_arr = array(2,6,3,10);//排好序的id列表
$sql = "select user,id from user_member where id in (".implode(",",$id_arr).")";
本来对id排序好了,结果查出来sql会自动对id再排序,怎么能按$id_arr
的顺序显示呢?
order by null
数据库 不会按你想的那样来做. 数据库自己的标准, 怎样使查询更有效率.
在这里, 要么全表扫一遍(或覆盖索引), 要么按索引查询.
要得到你的结果, 要么在sql里做一些比较tricky的事情, 要么放在你的php里排序.
select user, id
from
(select user,id, field(id, 2,6,3,10) row
from user_member
where id in (2,6,3,10)) TMP
order by row;
WHERE id IN($id) ORDER BY find_in_set(id ,'{$id}')
上一篇: 跟踪php中异常的调用过程
下一篇: 很好用的PHP数据库类_MySQL
推荐阅读
-
mysql-MySQL:为什么这样的小改动会造成存储过程错误呢?
-
MySQL master/slave 模式的读写分离为什么会提高性能?
-
MYSQL如何自动为查询数据的结果编上序号详解
-
MySQL 笔记整理(12) --为什么我的MySQL会“抖”一下?
-
mysql自动生成排序列复杂sql的方法
-
mysql对无索引的字段进行排序后limit,有可能导致分页查询重复出现问题
-
mysql为什么不推荐在大数据量的情况下使用join连接查询
-
ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方案
-
面试官:为什么mysql不建议执行超过3表以上的多表关联查询?
-
再探幻读!什么是幻读?为什么会产生幻读,MySQL中是怎么解决幻读的?