我正在学习django。在我的项目中,我无法使用django ORM进行查询:
SELECT MIN( id ) AS id, domain, COUNT( * ) AS cnt
FROM app_competition
WHERE word_id = 1545
GROUP BY domain
请帮我完成此查询
答案 0 :(得分:2)
你需要一些Aggregation!
在您的案例中您需要做的是两件事:首先,使用values
强制查询GROUPBY,然后使用内置函数Min
和{{1}注释您的查询}
如果我的django-orm fu是正确的,你的查询应该是这样的:
Count
需要注意的关键事项:您需要在任何注释之前放置from django.db.models import Min, Count
Competition.objects.values('domain').filter(word_id=1545).annotate(id=Min('id'), cnt=Count('id'))
调用以强制它进入GROUPBY,其余部分是非常自我解释的。
没有测试查询,所以我希望我做对了:)