登录
首页 >  Golang >  Go问答

使用 Gorm 的原始查询从 psql 检索 sum() 结果

来源:stackoverflow

时间:2024-04-06 22:24:33 156浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《使用 Gorm 的原始查询从 psql 检索 sum() 结果》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我的原始查询是

select 
  at."category" as "category", 
  at."month" as "month", 
  sum(at.price_aft_discount) as "sum", 
  sum(at.qty_ordered) as "sum2" 
from 
  all_trans at 
group by 
  at."category", 
  at."month" 
order by 
  at."category" asc, 
  at."month" asc

在 dbeaver 中执行上述查询时,总和列给出警告:sum: numeric(131089,0)(只读:没有对应的表列)sum2 也给出相同的警告

我使用 gorm 查询将结果保存在 go 中的代码是:

type ATQueryResult struct {
   category string  `gorm:"column:category"`
   month    string  `gorm:"column:month"`
   sum      float32 `gorm:"column:sum"`
   sum2     float32 `gorm:"column:sum2"`
}

queryString := ... // same as above
var result []ATQueryResult

db.Table(model.TableAllTrans).Raw(queryString).Find(&result)

fmt.Println(result[3])

但问题是,所有 result[i].sumresult[i].sum2 都是 0-zero。在 dbeaver 上实时查询时,我可以看到实际的总和数(全部非零),尽管有上述警告。但是当我尝试将查询结果扫描到 result 时,所有总和值为 0。


正确答案


这些字段必须是 exported,gorm(或它在幕后利用的任何东西)才能填充它们。尝试使用:

type ATQueryResult struct {
    Category string  `gorm:"column:category"`
    Month    string  `gorm:"column:month"`
    Sum      float32 `gorm:"column:sum"`
    Sum2     float32 `gorm:"column:sum2"`
}

本篇关于《使用 Gorm 的原始查询从 psql 检索 sum() 结果》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>