You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL原生查询转GORM实现咨询:Clause与条件选择困惑

GORM实现分组统计查询的方案

你的这条SQL是典型的分组聚合查询,不需要用到复杂的Clause,直接用GORM的链式API就能搞定,核心用到Select、Group、Order这几个方法,完全匹配原SQL的逻辑。

步骤1:定义结果接收结构体

先定义一个结构体来接收统计结果,字段和SQL里的别名对应:

type CollectionStats struct {
    Collection string `gorm:"column:collection"`
    ItemCount  int64  `gorm:"column:item_count"`
}

步骤2:执行查询

如果你的项目里已经定义了对应collections表的模型(比如Collection),可以用Model方法关联;如果没有,直接用Table指定表名即可:

方式一:使用模型关联查询

var stats []CollectionStats

db.Model(&Collection{}).
    Select("collection, count(*) as item_count").
    Group("collection").
    Order("item_count desc, collection").
    Find(&stats)

方式二:直接指定表名查询

var stats []CollectionStats

db.Table("collections").
    Select("collection, count(*) as item_count").
    Group("collection").
    Order("item_count desc, collection").
    Find(&stats)

补充说明

这里的Select对应SQL里的字段选择,Group实现分组逻辑,Order完全照搬原SQL的排序规则,整个链式调用和原SQL的结构一一对应,属于GORM最常用的常规查询场景,不需要额外借助Clause来实现。

内容的提问来源于stack exchange,提问作者oyilmaztekin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:15:48