찾다

 >  Q&A  >  본문

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

$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的顺序显示呢?

ringa_leeringa_lee2819일 전581

모든 응답(3)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-10 14:59:54

    order by null

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 14:59:54

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

    要得到你的结果, 要么在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;
    

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 14:59:54

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

    회신하다
    0
  • 취소회신하다