mysql in...(查詢結果也按照in里面的字段值順序排序的一種解決辦法)


博主在開發中遇到這樣一個問題:
 
select * from `user` where id in(23,1,55,94)
當執行類似這樣一條sql 的時候,mysql都會事先將id排序再去查找:
 
          說明:這個在高性能mysql里面有介紹,in查詢其實是一個掃表的過程,in查詢時,底層是先將in里面的id就從小到大排序優化,然后再執行in查詢的,所以
最好是手動將id從小到大排序后再執行in查詢,例如in (1,23,55,94),然后再按照你想要的順序排序就好了
 
         但是業務要求查詢結果需要按照 in 里面id的順序(即23,1,55,23,94的順序 )返回,這時候該怎么做呢?
 
這條語句就可以搞定,是不是很方便 : select * from `user` where id in (23,1,55,94) order by field (id,23,1,55,94) 
 
   題外話:還有個不推薦的但可行方式,就是拿到id的數組后遍歷分開查庫,這樣肯定會影響不少性能。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM