go gorm想要查询数据按照where in中的数据进行排序

简介

遇到一个比较常见的场景,就是因为一般不太建议联合查询,所以在后端代码中进行多张表分别查询,但是最终的结果需要按照第一张表的某个字段去排序该怎么做呢?

使用到 FIELD 函数

流程:

  • 我先进行表 A 的查询,拿到了一组数据 id 的切片,这组数据在代码中已经按照表 A 的日期字段排好序了
  • 再把查出的表 A 的数据(已经排序好的),去表 B 查询,用到 where in,查完之后顺序不许乱
// 那么我们在查询表 B 的时候
db.Where("id IN (?)", ids).Order(gorm.Expr("FIELD(id, ?)", ids)).Find(&TableB)

这里用到了 gorm.Expr 函数,它可以将一段字符串转化为一个 query expression,而 “gorm.Expr(“FIELD(id, ?)”, ids)” 表示按照 ids 的顺序对 id 进行排序

猜你喜欢

转载自blog.csdn.net/abcnull/article/details/129449525
今日推荐