我爱学习网首页 | 设为首页 | 收藏本站 | 网站地图 您好,欢迎光临我爱学习网
我爱学习网

当前位置:首页 > 编程开发 > sql >

MySQL查询in操作 查询结果按in顺序排序和显示

时间:2017-01-04 14:25 来源:未知 | 作者:我爱学习网 | 本文已影响
mysql in 查询结果按in顺序排序
 
 
MYSQL语句
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一下?
 
其实可以这样
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,是效率很低的排序方式。除非数据变化频率很低,或者有长时间的缓存,否则不建议用这样的方式排序。
建议在程序代码中自行排序。但是也有人说这种排序不会出现什么性能瓶颈
(责任编辑:我爱学习网)



分享到: 更多