我有两个表 orders 和与会者。这两个表都有一个字段电子邮件。
我正在尝试编写一个查询,该查询将所有未包含在表顺序中的与会者的电子邮件退还给我。
通常来说,我的查询会说: “选择与会者中不包含在订购电子邮件中的所有电子邮件。”
我尝试了以下查询,但是它没有达到我期望的方式。
SELECT A.email
FROM attendee A
INNER JOIN order B ON A.order_id = B.id
WHERE A.email NOT B.email
答案 0 :(得分:1)
选择与会者中所有未包含在订单电子邮件中的电子邮件
这可以通过NOT EXISTS
解决:
select a.email
from attendees a
where not exists (
select 1 from orders
where email = a.email
)
或在LEFT JOIN
列上带有email
:
select a.email
from attendees a left join orders o
on a.email = o.email
where o.email is null
答案 1 :(得分:0)
您应该轻松使用LEFT JOIN
并通过过滤所有匹配项来查找不匹配项
SELECT A.email
FROM attendee A
LEFT JOIN order B
ON A.order_id = B.id
WHERE B.email IS NULL
答案 2 :(得分:0)
我最终使用Django生成查询,因为我可以更好地处理它。工作结果如下。感谢您的帮助。
(SELECT "attendee"."email" FROM "attendee" ORDER BY "attendee"."created" DESC) EXCEPT (SELECT "order"."email" FROM "order" ORDER BY "order"."created" DESC)
答案 3 :(得分:0)
检查:
(select email_is from attendees) minus (select email_id from order );