如何在Ent框架中按聚合列进行排序?
可以不用原生SQL解决,关键是给聚合函数指定别名,然后按这个别名排序。
你的问题出在没给Count()聚合指定别名,直接用"count"排序时,Ent会把它当成some_table的字段,自然报错。修改方法很简单:
- 给
Count()聚合通过.As("count")指定别名 - 调整调用顺序(逻辑上先分组、聚合再排序更合理)
修改后的代码如下:
entClient. SomeTable. Query(). GroupBy(sometable.FieldSomeColumn). Aggregate(ent.Count().As("count")). Order(ent.Desc("count")). Limit(10). Scan(ctx, &v)
这段代码生成的SQL会和你想要的完全一致:按some_column分组,计算每组数量,按数量降序取前10条,全程在数据库层面完成排序,不需要在内存中处理大量数据。
内容的提问来源于stack exchange,提问作者psmith
相关产品推荐
相关产品推荐

