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 最大的记录”

posted @ 2025-07-15 11:10  Ashe|||^_^  阅读(39)  评论(0)    收藏  举报