MySQL查询时,查询结果如何按照where in数组排序

在查询中,MySQL默认是order by id asc排序的,但有时候需要按照where in 的数组顺序排序,比如where in的id查询数组为[922,106,104,103],正常情况查询出来的结果顺序为[103,104,106,922],这可能不是我们想要的结果,

我们期望查出来的结果顺序与where in的顺序一致,这里介绍两个方式:

1.使用find_in_set函数:

select * from table where id in (922,106,104,103) order by find_in_set(id,'922,106,104,103');

2.使用order by field

select * from table where id in (922,106,104,103) order by field(id,922,106,104,103);

下面是在tp5中的实现过程

 $path = '103-104-106-922';
$arr = explode('-',$path);
dump($arr);
$new_arr = array_reverse($arr);
dump($new_arr);
$new_arr1 = implode(',',$new_arr);
dump($new_arr1);
$list = Db::name('member')
->where('id','in',$new_arr1)
->where('type',2)
->field('id,type')
//->order("find_in_set(id,$new_arr1)")
->order("field(id,$new_arr1)")
->select();
dump($list);die;

查询结果如下所示,可见实现了按照where in 数组顺序进行排序了

 array(4) {
[0] => string(3) "103"
[1] => string(3) "104"
[2] => string(3) "106"
[3] => string(3) "922"
}
array(4) {
[0] => string(3) "922"
[1] => string(3) "106"
[2] => string(3) "104"
[3] => string(3) "103"
}
string(15) "922,106,104,103"
array(4) {
[0] => array(2) {
["id"] => int(922)
["type"] => int(2)
}
[1] => array(2) {
["id"] => int(106)
["type"] => int(2)
}
[2] => array(2) {
["id"] => int(104)
["type"] => int(2)
}
[3] => array(2) {
["id"] => int(103)
["type"] => int(2)
}
}

MySQL查询时,查询结果如何按照where in数组排序的更多相关文章

  1. Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库

    最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...

  2. MySql数据库,对varchar类型字段str进行where str=0条件查询时,查询结果是什么

    在用MySQL查询数据的时候,遇到了一个奇怪的问题.用一个varchar类型的字符串str,作为条件与0比较时,会查str不为0的数据. 比如:SELECT id, idnumber from hr_ ...

  3. SubSonic3.0使用外连接查询时查询不出数据的问题修改

    今天在开发时,要使用到外连接查询,如图 老是查不出数据,所以就追踪了一下代码,发现查询后生成的SQL语句变成了内连接了,真是晕 然后继续Debug,发现原来SqlQuery类在调用LeftInnerJ ...

  4. linq查询时查询语句中附带多个查询时“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”

    主要原因是因为EF采用的 DataReader来进行数据的存储,此时connection使用的是同一个. 例如: list = _tzNewsService.GetAll().Where(w => ...

  5. django ORM多对多正向查询时查询返回结果为None

    表 class Books(models.Model): '''书籍''' id = models.AutoField(primary_key=True) name = models.CharFiel ...

  6. mysql查询时强制区分大小写

    转载自:http://snowolf.iteye.com/blog/1681944 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写.但作为用户信息,一旦用户名 ...

  7. MySQL中查询时"Lost connection to MySQL server during query"报错的解决方案

    一.问题描述: mysql数据库查询时,遇到下面的报错信息: 二.原因分析: dw_user 表数据量比较大,直接查询速度慢,容易"卡死",导致数据库自动连接超时.... 三.解决 ...

  8. Mybatis使用MySQL进行模糊查询时输入中文检索不到结果

    Mybatis使用MySQL进行模糊查询时输入中文检索时,需要在jdbcURL后增加参数   ?useUnicode=true&characterEncoding=UTF-8

  9. 警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱

    警惕 MySql 更新 sql 的 WHERE 从句中的 IN() 子查询时出现的性能陷阱 以下文章来源:https://blog.csdn.net/defonds/article/details/4 ...

  10. mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

随机推荐

  1. [软件工程基础]Alpha 展示博客

    团队成员 个人简介 个人简介参照团队介绍博客. 个人博客 王嘉睿爵:http://www.cnblogs.com/whynotRW/ 游心:http://www.cnblogs.com/jefhq/ ...

  2. 关于byte[]和字符串的转换

    public static String byteToStr(byte[] b) { return new String(b); } public static byte[] strToByte(St ...

  3. SSAS 部署之创建部署脚本

    1.获取多维数据库的结构脚本: 当你的SSAS项目完成后,在Bin目录下会有一个SSAS.asdatabase文件. 2.打开“开始” ->Microsoft SQL Server 2008 R ...

  4. nodejs 实践:express 最佳实践 (一) 项目结构

    express 最佳实践 (一) 第二篇: express 最佳实践(二):中间件 最近,一直在使用 nodejs 做项目,对 nodejs 开发可以说深有体会. 先说说 nodejs 在业务中的脚色 ...

  5. 客户端rsyslog配置文件详解

    客户端rsyslog配置文件详解 最近再开发一个rsyslog的接收服务端,支持udp,tcp和tls三种协议.所以去仔细研究了一下rsyslog.conf的配置文件,下面来详细说一下. 因为我这儿重 ...

  6. 不小心踩到的XMAPP的N种问题

    1.在win10上的xampp集成环境中安装mongo扩展 按照网上搜索的下载对应文件后,在phpinfo里面还是找不到mongo的扩展信息,后面也是请教同事帮忙解决: http://www.theg ...

  7. ios 设置cell的间距

    1.设置假的间距,我们在tableviewcell的contentView上添加一个view,比如让其距离上下左右的距离都是10:这个方法是最容易想到的: 2.用UIContentView来代替tab ...

  8. Java 基础案例

    1.变量及基本数据类型 案例1:变量声明及赋值 //1.变量的声明 int a; //声明一个整型的变量a int b,c,d; //声明三个整型变量b,c,d //2.变量的初始化 int a = ...

  9. hdu 3861 The King’s Problem

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  10. 感觉单链表是实现BCL ICollection 的最佳方式,所有操作都能以最小的时间复杂度完成

    public interface ICollection<T> : IEnumerable<T>, IEnumerable {     int Count { get; }// ...