为什么MySQL的in查询会自动排序

WBOY
發布: 2016-06-06 20:43:27
原創
1132 人瀏覽過

<code class="lang-php">$id_arr = array(2,6,3,10);//排好序的id列表
$sql = "select user,id from user_member where id in (".implode(",",$id_arr).")";

</code>
登入後複製
登入後複製

本来对id排序好了,结果查出来sql会自动对id再排序,怎么能按$id_arr的顺序显示呢?

回复内容:

<code class="lang-php">$id_arr = array(2,6,3,10);//排好序的id列表
$sql = "select user,id from user_member where id in (".implode(",",$id_arr).")";

</code>
登入後複製
登入後複製

本来对id排序好了,结果查出来sql会自动对id再排序,怎么能按$id_arr的顺序显示呢?

order by null

数据库 不会按你想的那样来做. 数据库自己的标准, 怎样使查询更有效率.
在这里, 要么全表扫一遍(或覆盖索引), 要么按索引查询.

要得到你的结果, 要么在sql里做一些比较tricky的事情, 要么放在你的php里排序.

<code>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;
</code>
登入後複製

WHERE id IN($id) ORDER BY find_in_set(id ,'{$id}')

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板