Django复杂查询从groupby和having子句中获取数据 [英] Django complex query to fetch data from groupby and having clause

查看:1066
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆