gorm分页查询count报错 sql: no rows in result set

正确的写法:

qs, user,users := db.DB(), new(db.User),new([]db.User)
    var count int
    if nil != listReq.Start && nil != listReq.End {
        qs = qs.Where("created_at BETWEEN ? AND ?", listReq.Start, listReq.End)
    }
    err := qs.Table("user").Count(&count).Error
    if err != nil {
        return nil, err
    }
    if 0 != listReq.PageSize && 0 != listReq.PageNumber {
        qs = qs.Model(&user).Offset((listReq.PageNumber - 1) * listReq.PageSize).Limit(listReq.PageSize)
    }
    if err := qs.Order("created_at desc").Find(&users).Error; err != nil {
        return nil, err
    }

上面只展示了关键的代码,能说明问题即可。

要点是,count的查询必须写在分页之前,可以写在其余查询逻辑之后。

  • 如果写在分页之后,第一页不会报错,但是从第二页开始就会报错 sql: no rows in result set
  • 如果count写的太靠前了,就没办法顾及到其他必要的查询条件。

你可能感兴趣的:(gorm分页查询count报错 sql: no rows in result set)