【问题标题】:Django complex query to fetch data from groupby and having clauseDjango 复杂查询从 groupby 和有子句中获取数据
【发布时间】:2013-01-27 11:38:13
【问题描述】:

我想对具有 CNT.Status 的 MyUser 表执行 group by 子句,原始查询如下所示。

SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1

我尝试了使用 Django 模型 API 的各种选项,但它也在 group by 子句中添加了“id”。

【问题讨论】:

    标签: django group-by django-queryset annotate


    【解决方案1】:

    你好像在找filtering on annotations:

    qs = ( MyUser
          .objects
          .annotate(num_status=Count('status'))
          .filter(num_status__gt=1)
         )
    

    注意:我假设状态是 1:N 相关模型。

    【讨论】:

    • 这不是缺少.values('user_id')。只是好奇。
    • @Shubham 是的,更准确地说是.values_list( 'user_id', flat=True )。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2012-04-21
    • 2021-12-10
    相关资源
    最近更新 更多