Sql 如果未包含在其他列中,则筛选结果

Sql 如果未包含在其他列中,则筛选结果,sql,django,django-queryset,Sql,Django,Django Queryset,使用Django的QuerySet API执行以下SQL命令是否有一种等效的方法 select id, childid from mysite_nodetochild where childid NOT IN (Select "Nodeid" from mysite_nodetochild) 如果可能的话,我宁愿不使用原始sql,但我无法使用Django的Queryset获得一个干净的工作版本 试试看 nodetochild.objects.exclude(childid=nodetochil

使用Django的QuerySet API执行以下SQL命令是否有一种等效的方法

select id, childid from mysite_nodetochild
where childid NOT IN (Select "Nodeid" from mysite_nodetochild)
如果可能的话,我宁愿不使用原始sql,但我无法使用Django的Queryset获得一个干净的工作版本

试试看

nodetochild.objects.exclude(childid=nodetochild.objects.values_list('Nodeid', flat=True)).only('id', 'childid')
这应该或多或少地评估为:

SELECT "mysite_nodetochild"."id", "mysite_nodetochild"."childid" FROM "mysite_nodetochild" WHERE NOT ("mysite_nodetochild"."childid" =  (SELECT U0."nodeid" FROM "mysite_nodetochild" U0))
或者,如果需要处于状态的

nodetochild.objects.exclude(childid__in=nodetochild.objects.values_list('Nodeid', flat=True)).only('id', 'childid')
将评估:

SELECT "mysite_nodetochild"."id", "mysite_nodetochild"."childid" FROM "mysite_nodetochild" WHERE NOT ("mysite_nodetochild"."childid" IN  (SELECT U0."nodeid" FROM "mysite_nodetochild" U0))