Gorm中查询一条记录,First、Take、Last的区别
在 GORM(Go 的 ORM 库)中,First 和 Take、Last 方法都用于从数据库中查询单条记录,且都会限制结果为一条(相当于 SQL 中的 LIMIT 1)。
那么在使用的适合如何选择呢?

我们点进去d.db.First的源码对比Take和Last,就会发现
// First
tx = db.Limit(1).Order(clause.OrderByColumn{
Column: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},
})
// Take
tx = db.Limit(1)
// Last
tx = db.Limit(1).Order(clause.OrderByColumn{
Column: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},
Desc: true,
})
First多了按主键升序排序,Last多了按主键降序排序
因此我们一般可以这样认为:
First适用场景:获取“最早创建的记录”或“ID 最小的记录”
Take适用场景:“根据ID查询记录”或“获取符合条件的任意一条记录”
Last使用场景:获取“最晚创建的记录”或“ID 最大的记录”

浙公网安备 33010602011771号