We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gorm对count的执行如果包含distinct 或者列别名会执行报错在mysql,我找了相应的issue :go-gorm/gorm#5821
我的用法: 报错的地方: func SelectCount[T any](q *QueryCond[T], opts ...OptionFunc) (int64, *gorm.DB) { var count int64 resultDb := buildCondition(q, opts...) resultDb.Count(&count) //这里执行会生成sql不正确 return count, resultDb }
sql生成比方说是生成这样的:SELECT COUNT(Id as id) FROM t_test 这种语法在mysql执行是报错的, 因为gorm里对count逻辑:
Id as id
t_test
所以在不用到类似distinct什么情况下,所有sql一律生成 select count(*) from t_test ,不考虑复杂情况 所以我的解决方案我是想在这边执行Count的时候加个resultDb.Statement.Selects = nil // SelectCount 根据条件查询记录数量 func SelectCount[T any](q *QueryCond[T], opts ...OptionFunc) (int64, *gorm.DB) { var count int64 resultDb := buildCondition(q, opts...) //fix 查询分页数量有列Select只有一个则生成sql不对问题 resultDb.Statement.Selects = nil resultDb.Count(&count) return count, resultDb }
这种感觉也是组件gorm的问题~~~~对各个驱动并没有完全匹配 主要我用的使用列别名转了,如果单个字段,列别名不转的话没有问题,在gorm执行count的时候select count(fieldName) from 表 这样sql执行是正确的。不过总体上gorm的count兼容问题?
The text was updated successfully, but these errors were encountered:
分析的非常好,如果你感兴趣的话,欢迎你提交pr哈
Sorry, something went wrong.
分析的非常好,如果你感兴趣的话,欢迎你提交pr哈 我已经提交pr了哈,你看下,然后把自己之前项目增加的cond条件拼接也加进去了
在pr下面回复一下 I have read the CLA Document and I hereby sign the CLA 签一下cla
fix: fix SelectCount error #68 (#69)
eb9dcc4
No branches or pull requests
gorm对count的执行如果包含distinct 或者列别名会执行报错在mysql,我找了相应的issue :go-gorm/gorm#5821
我的用法:
报错的地方:
func SelectCount[T any](q *QueryCond[T], opts ...OptionFunc) (int64, *gorm.DB) {
var count int64
resultDb := buildCondition(q, opts...)
resultDb.Count(&count) //这里执行会生成sql不正确
return count, resultDb
}
sql生成比方说是生成这样的:SELECT COUNT(
Id as id
) FROMt_test
这种语法在mysql执行是报错的,因为gorm里对count逻辑:
所以在不用到类似distinct什么情况下,所有sql一律生成 select count(*) from t_test ,不考虑复杂情况
所以我的解决方案我是想在这边执行Count的时候加个resultDb.Statement.Selects = nil
// SelectCount 根据条件查询记录数量
func SelectCount[T any](q *QueryCond[T], opts ...OptionFunc) (int64, *gorm.DB) {
var count int64
resultDb := buildCondition(q, opts...)
//fix 查询分页数量有列Select只有一个则生成sql不对问题
resultDb.Statement.Selects = nil
resultDb.Count(&count)
return count, resultDb
}
这种感觉也是组件gorm的问题~~~~对各个驱动并没有完全匹配
主要我用的使用列别名转了,如果单个字段,列别名不转的话没有问题,在gorm执行count的时候select count(fieldName) from 表 这样sql执行是正确的。不过总体上gorm的count兼容问题?
The text was updated successfully, but these errors were encountered: