sql in按照指定順序排序


https://www.cnblogs.com/xiaoliu66007/p/5817219.html

https://www.cnblogs.com/wayne173/p/6714259.html

 

Select * 
FROM table1 
Where ID IN (3,5,1,4,2)
order by field (ID,3,5,1,4,2)

 

mysql in 排序 也可以按in里面的順序來排序

 

SQL: select * from table where id IN (3,9,6);
這樣的情況取出來后,其實,id還是按3,6,9,排序的,但如果我們真要按IN里面的順序排序怎么辦?SQL能不能完成?是否需要取回來后再foreach一下?
其實可以這樣
sql: select * from table where id IN (3,9,6) order by field(id,3,9,6);
出來的順序就是指定的(3,6,9)順序了
關於這種排序的效率,
有文章指出:
FIELD(str,str1,str2,str3,…)
Returns the index (position) of str in the str1, str2, str3, … list. Returns 0 if str is not found.
排序過程:把選出的記錄的 id 在 FIELD 列表中進行查找,並返回位置,以位置作為排序依據。
這樣的用法,會導致 Using filesort,是效率很低的排序方式。除非數據變化頻率很低,或者有長時間的緩存,否則不建議用這樣的方式排序。
使用explain測試會導致using filesort。
建議在程序代碼中自行排序。


免責聲明!

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



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