自定义查询以获取不在其他表中的数据

时间:2019-04-21 09:18:45

标签: sql

我有两个表 orders 与会者。这两个表都有一个字段电子邮件

我正在尝试编写一个查询,该查询将所有未包含在表顺序中的与会者的电子邮件退还给我。

通常来说,我的查询会说: “选择与会者中不包含在订购电子邮件中的所有电子邮件。”

我尝试了以下查询,但是它没有达到我期望的方式。

SELECT A.email
FROM attendee A
INNER JOIN order B ON A.order_id = B.id 
WHERE A.email NOT B.email

4 个答案:

答案 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 );