mysql in 按顺序排序_mysql in 排序 也可以按in里面的顺序来排序
生活随笔
收集整理的這篇文章主要介紹了
mysql in 按顺序排序_mysql in 排序 也可以按in里面的顺序来排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);
這樣的情況取出來后,其實,id還是按1,2,3,4,5,6,7,8,9,排序的,但如果我們真要按IN里面的順序排序怎么辦?SQL能不能完成?是否需要取回來后再foreach一下?
其實可以這樣
sql: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);
出來的順序就是指定的順序了
關于這種排序的效率,
有文章指出:
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,是效率很低的排序方式。除非數據變化頻率很低,或者有長時間的緩存,否則不建議用這樣的方式排序。
作者建議在程序代碼中自行排序。
但是也有人說這種排序不會出現什么性能瓶頸
具體還是自己測試一下吧。
總結
以上是生活随笔為你收集整理的mysql in 按顺序排序_mysql in 排序 也可以按in里面的顺序来排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python print用法不换行_py
- 下一篇: linux硬盘为啥分区,Linux下为什