yii2 框架where_in 查询不排序,按顺序查询
一般情况下mysql在select的时候,如果where后面是in结构,查询出来的结果不会按in里面的数据顺序进行返回,而是有默认的排序
默认排序应该按字段升序进行排序这个也不是固定的,可能多个字段综合排序,那么有逻辑不需要进行排序的情况下如下方式实现
SQL查询实现如下:
第一种方式:order by find_in_set(id,'1,5,8,2,3')
SELECT * FROM 表名 WHERE ID in (1,5,8,2,3) ORDER BY FIND_IN_SET(ID,'1,5,8,2,3')
第二种方式:order by substring_index('1,5,8,2,3',id,1)
SELECT * FROM 表名 WHERE ID in (1,5,8,2,3) ORDER BY SUBSTRING_INDEX('1,5,8,2,3',ID,1)
第三种方式:order by field
SELECT * FROM 表名 WHERE ID in (2,3,5,4,7,6,10,9,8) ORDER BY FIELD(ID,1,5,8,2,3)
以上方式均可实现按id 顺序查询,Yii2框架如何实现呢,方法如下按第三种方式
orderBy(['field(id,1,5,8,2,3)'=>[]])
以上如有什么问题请加群讨论