Django复杂查询从groupby和having子句中获取数据 [英] Django complex query to fetch data from groupby and having clause
本文介绍了Django复杂查询从groupby和having子句中获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在MyUser表上执行具有CNT.Status的group by子句,原始查询就像下面那样。 > SELECT user_id user_table GROUP BY user_id HAVING COUNT(status)= 1
我尝试了各种使用Django模型API,但它在group by子句中也增加了id。 解析方案
看来你正在寻找在注释上过滤:
qs =(MyUser
.objects
.annotate(num_status = Count('status'))
.filter(num_status__gt = 1)
)
注意:我认为该状态是1:N相关模型。
I want to execute group by clause on MyUser table having CNT.Status exactly one the raw query would be like below.
SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1
I tried various options using Django model API but its adding "id" too in group by clause.
解决方案
It seems you are looking for filtering on annotations:
qs = ( MyUser
.objects
.annotate(num_status=Count('status'))
.filter(num_status__gt=1)
)
Notice: I supose that status is a 1:N related model.
这篇关于Django复杂查询从groupby和having子句中获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文