美文网首页
gorm分页查询count报错 sql: no rows in

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

作者: 开心走一波 | 来源:发表于2020-06-08 17:27 被阅读0次

正确的写法:

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

      本文链接:https://www.haomeiwen.com/subject/jgnrtktx.html