gpt4 book ai didi

sql - 使用 Django ORM 执行复杂的自引用查询

转载 作者:行者123 更新时间:2023-12-04 22:31:47 27 4
gpt4 key购买 nike

我有以下模型:

class Message(Model):
url = URLField("URL")
email = EmailField("E-Mail")
contacted = BooleanField("Contacted", default=False)

使用示例数据,例如:
| url | email           | contacted |
+-----+-----------------+-----------+
| foo | foo@example.com | N |
| bar | bar@example.com | N |
| baz | foo@example.com | Y |

我想选择从未联系过其电子邮件地址的所有不同行(按电子邮件地址)。使用此示例数据, bar@example.com row 将是唯一返回的。

最佳答案

这将返回您想要的记录:

not_contacted = Message.objects.exclude(
email__in=Message.objects.filter(contacted=True).values('email')
)

这具有仅运行一个查询的优点。您的查询将如下所示:
SELECT
messages_message.id, messages_message.url, messages_message.email, messages_message.contacted
FROM
Messages
WHERE NOT
(messages_message.email IN
( SELECT U0.email from messages_message U0 WHERE U0.contacted = True )
)

请注意,对于许多记录,此查询可能不是最佳的,但它可能适用于大多数用途。

关于sql - 使用 Django ORM 执行复杂的自引用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com