文档章节

mysql in 排序 也可以按in里面的顺序来排序

JesusSlim
 JesusSlim
发布于 2015/05/15 22:28
字数 289
阅读 8
收藏 0

http://blog.csdn.net/wwwyuanliang10000/article/details/37660545


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,是效率很低的排序方式。除非数据变化频率很低,或者有长时间的缓存,否则不建议用这样的方式排序。
作者建议在程序代码中自行排序。
但是也有人说这种排序不会出现什么性能瓶颈
具体还是自己测试一下吧。


© 著作权归作者所有

JesusSlim
粉丝 0
博文 74
码字总数 10136
作品 0
杭州
程序员
私信 提问
mysql in根据查询id排序

mysql in根据查询时,返回结果是自行排序的,如果要按照我们查询的ID进行排序,要用到order by field,下面用几个例子来说明一下mysql in查询排序 例子: SQL:select * from table where id I...

startbbs
2013/02/27
0
0
mysql in 排序问题:可以按in里面的顺序来排序

mysql in 排序问题是一个问题,但是在遇到问题的时候就发现问题了,有时候不是外面想要的东西。譬如,有个场景,一个几万条记录的表,主键是 id,我想从表中取 id 为 30,20,80,40 的几条记...

jincon
2014/07/07
0
0
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能不能完成?是否需...

bengozhong
2016/10/27
8
0
MySQL中order by的实现 和 by rand() 和优化

有同学上周问了个问题 “MySQL 里面的order by rand()”是怎么实现的。我们今天来简单说说MySQL里的order by。 几种order by的情况 乍一看这个问题好像有点复杂,我们从最简单的case开始看起...

鉴客
2012/05/14
181
2
Ordering by specific field values with MySQL

本文译自(Ordering by specific field values with MySQL)版权@归原文所有 在 SQL 查询中可能有时需要使用 ASC 或 DESC 或使用特殊排序字段才能完成的特定顺序. MySQL 有一个 ORDER BY FIELD...

A Coder @ Work
2018/01/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部