webdb.Select(queryDBInfo.QueryInfos).Where(queryDBInfo.QueryCriteria).Order(queryDBInfo.SortCriteria).Offset(queryDBInfo.Offset).Limit(queryDBInfo.Count).Find(&find)
可以这样:db.Table(表名).Where(条件).Count(&totalSize).Sort(排序).Offset(offset).Limit(limit).Find(values) 原理是先按条件count,再查询分页。亲测,有效!
[quote=引用 8 楼 Nihility/ 的回复:][quote=引用 6 楼 qybao 的回复:]因为gorm的find和count是分别发行sql的,你可以打印sql的log,会发行两条sql,一条select *,一条select count(*)。因为是两条sql,所以就有可能一条成功,一条失败,或者两条都失败。如果第一条失败了,就没必要执行第二条了,所以分开做个判断比较合理。
[quote=引用 6 楼 qybao 的回复:]因为gorm的find和count是分别发行sql的,你可以打印sql的log,会发行两条sql,一条select *,一条select count(*)。因为是两条sql,所以就有可能一条成功,一条失败,或者两条都失败。如果第一条失败了,就没必要执行第二条了,所以分开做个判断比较合理。
因为gorm的find和count是分别发行sql的,你可以打印sql的log,会发行两条sql,一条select *,一条select count(*)。因为是两条sql,所以就有可能一条成功,一条失败,或者两条都失败。如果第一条失败了,就没必要执行第二条了,所以分开做个判断比较合理。
for example tx := db.Where(xxx).Find(&data) if tx.Error == nil { tx = tx.Count(&count) }
不推荐这样写 两次查询,有两次出错的可能,error要分开处理,不要偷懒 ```go var count int if e:=db.Model(&model).Where("x >?", model.X).Count(&count).Error;e!=nil { handle(e) } if count !=0 { if e:=db.Model(&model).Where("x >?", model.X).Find(&models).Error;e!=nil { handle(e) } }
2,190
社区成员
914
社区内容
加载中
试试用AI创作助手写篇文章吧