【问题标题】:Add GROUP BY to django query将 GROUP BY 添加到 django 查询
【发布时间】:2012-10-01 21:02:23
【问题描述】:

我有以下疑问:

titles = Title.objects.all()

在某些情况下,我需要为此查询获取DISTINCT ('title')。 Django 在使用 MySQL 后端时不允许使用distinct('title')

基本上,我想做的是:

titles = titles.extra('GROUP BY title')

我该如何正确地做到这一点?

【问题讨论】:

标签: mysql sql django django-models


【解决方案1】:

您是否尝试过使用.distinct() 方法?

titles = Title.objects.values('title','other_columns_you_care_about_and_not_distinct').distinct()

如果您对.all() 执行.distinct(),您将返回与开始时一样多的行,当然前提是您的 id 列是唯一的。因此,您只需在.values() 中拉回您需要的列。

【讨论】:

    【解决方案2】:

    你需要[annotate][1]来分组

    titles = titles.annotate(Count("title")).order_by()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2015-12-10
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      相关资源
      最近更新 更多