聚合查询
聚合查询是指对一组数据进行统计或计算,例如求和、计数、平均值等。GORM 支持多种聚合查询方法,例如:
Count
:统计符合条件的记录数量。Sum
:对符合条件的记录进行求和计算。Avg
:对符合条件的记录进行平均值计算。Min
:找出符合条件的记录中的最小值。Max
:找出符合条件的记录中的最大值。
下面是一个示例,演示如何使用这些方法进行聚合查询:
代码语言:javascript复制// 统计符合条件的记录数量
var userCount int64
db.Model(&User{}).Where("name LIKE ?", "A%").Count(&userCount)
// 对符合条件的记录进行求和计算
var totalPrice float64
db.Table("orders").Where("user_id = ?", 1).Select("sum(total_price)").Scan(&totalPrice)
// 对符合条件的记录进行平均值计算
var averagePrice float64
db.Table("orders").Where("user_id = ?", 1).Select("avg(total_price)").Scan(&averagePrice)
// 找出符合条件的记录中的最小值
var minPrice float64
db.Table("products").Select("min(price)").Scan(&minPrice)
// 找出符合条件的记录中的最大值
var maxPrice float64
db.Table("products").Select("max(price)").Scan(&maxPrice)
上面的代码中,我们演示了如何使用 GORM 的聚合查询方法进行统计、计算等操作。
分页查询
当我们需要查询大量数据时,通常需要进行分页操作,GORM 也提供了多种分页查询方法,例如:
Limit
:限制查询结果的数量。Offset
:设置查询结果的起始位置。Order
:设置查询结果的排序方式。
下面是一个示例,演示如何使用这些方法进行分页查询:
代码语言:javascript复制var users []User
db.Limit(10).Offset(0).Order("id desc").Find(&users)
// 分页查询
page := 1
pageSize := 10
var pageUsers []User
db.Offset((page - 1) * pageSize).Limit(pageSize).Order("id desc").Find(&pageUsers)
上面的代码中,我们演示了如何使用 GORM 的分页查询方法进行限制查询结果数量、设置查询结果的起始位置、设置查询结果的排序方式等操作。