Gorm-常见查询操作(三)

2023-04-24 19:47:41 浏览数 (1)

聚合查询

聚合查询是指对一组数据进行统计或计算,例如求和、计数、平均值等。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 的分页查询方法进行限制查询结果数量、设置查询结果的起始位置、设置查询结果的排序方式等操作。

go

0 人点赞