mysql - Django distinct group by 查询两个字段

标签 mysql django django-models

我有一个有 2 个字段的模型。

class MyModel:
   tcode = Charfield
   created_on = Date field
   #some more fields

现在这个模型可以有多个具有相同 tcode 的行,并且每一行可以有不同的日期或相同的日期。

例如

tcode1, 1/2/2001
tcode2, 1/2/2001
tcode2, 2/2/2001
....etc.

我想在此模型上过滤查询,以便 tcode 和日期字段组合应该是唯一的。我怎样才能得到所有这些对象。

我正在尝试这样做

MyModel.objects.all().order_by('tcode').distinct('tcode', 'created_on')

现在您可能会问,如果在两个字段中有两行具有相同的数据,我想要哪一行!对我来说没关系,任何行都可以。

最佳答案

我不认为有一个单一的查询可以做到这一点,因为数据库没有机制从重复项中随机选择一个。但是,如果您只关心这两个字段,您可以这样做:

MyModel.objects.order_by('tcode').values('tcode', 'created_on').distinct()

这不会为您提供完整的 MyModel 对象,而是包含所有现有 tcodecreated_on 组合的字典列表。

关于mysql - Django distinct group by 查询两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088337/

相关文章:

javascript - 如何在我的侧边栏悬停时制作动态下拉菜单?

mysql - MySQL中的onUpdate是什么意思?

python - 在使用管理面板插入模型字段之前对其进行预处理

使用 JSON 的 Django 多语言文本字段

php - 存储过程在下一个查询中导致 "Commands out of sync"

python - 无法安装 Django

javascript - Django:静态文件图像 URL 路径中断,主页模板除外

python - django-admin 面板中的限制性选择

python - 当我在 Eclipse 中运行一个简单的 django 脚本时出现奇怪的 python 错误,而不是在控制台中发生

php - Yii Controller 方法SQL查询