TP5 MYSQL按照原来的IN顺序查询

PS:小项目中IN查询时可以的,但最好减少使用次数。

距离有个用户表,我们需要取出ID是(1,2,3,4,5)的用户
  • 以下是MYSQL原生的IN查询使用order
SELECT
    * 
FROM
    `user` 
WHERE
    
    AND `id` IN ( 1, 2, 3, 4, 5 ) 
ORDER BY
    field( b.id, 1, 2, 3, 4, 5 )

只需要加最后那一段就可以实现,但是TP5里面在生成MYSQL的时候会进行转换,所以会导致以下情况:

image
  • 所以,我们在使用拼接order的时候需要用到异常处理类Expression
$ids = [1, 2, 3, 4, 5];
$exp = new Expression('field(b.id,' . implode(',', $ids) . ')'); //用于排序
db('user')->whereIn('id', $ids)->order($exp)->select();

代码比较简单,这里需要引入Expression才能使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 3,874评论 0 8
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,076评论 0 19
  • 1.A simple master-to-slave replication is currently being...
    Kevin关大大阅读 6,091评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,554评论 0 13
  • 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件...
    shadow雨轩阅读 526评论 0 3