Django在自身上加入同一个表时进行查询
我发现在我的工作中,我经常不得不自己加入同一个表,部分原因是我无法控制数据库的设计,部分原因是大多数时候都需要定制一些东西Django在自身上加入同一个表时进行查询,django,orm,self-join,Django,Orm,Self Join,我发现在我的工作中,我经常不得不自己加入同一个表,部分原因是我无法控制数据库的设计,部分原因是大多数时候都需要定制一些东西 Select distinct t.label, z.dupCount From optevents t Join (select label, Count(*) dupCount from optevents group By label Having Count(*) > 1
Select distinct t.label, z.dupCount
From optevents t
Join
(select label, Count(*) dupCount
from optevents
group By label
Having Count(*) > 1) z
On z.label = t.label
where t.campaignId = 100
order By dupCount Desc
我很好奇如何将其转换为Django ORM查找
模型定义非常简单,根本没有外键。您应该能够通过和的组合实现这一点
这是未经测试的,所以我暂时将其作为注释:
OptEvents.objects.filter(campaign\uu pk=100.values(“label”).annotate(dupCount=models.Count(“label”).order\u by(“dupCount”)
这是一个使用问题,我试图找到不同标签的计数。也就是说,标签可以是A | B | C,我需要A的计数、B的计数和C@TimmyO“Mahony,它确实管用。好球!我会加上它作为答案
OptEvents \
.objects \
.filter(campaign__pk=100) \
.values("label") \
.annotate(dupCount=models.Count("label")) \
.order_by("dupCount")