我正在尝试解决我认为简单查询的问题。
我有两个数据库,每个数据库都有一个表。
我想要做的是找到DB1.Table中DB2.Table中不存在的所有电子邮件
我正在使用此查询,但结果不正确,因为我知道DB1.Table包含DB2.Table中不存在的电子邮件(结果总是返回0)
SELECT DB1.20180320.email
FROM DB1.20180320
WHERE DB1.20180319.email NOT IN
(SELECT DB2.20180319.email FROM DB2.20180319 WHERE Status = 'active')
关于我在这里做错了什么的想法?我在每张表中使用大约80k行。
感谢。
答案 0 :(得分:1)
没有看到您的数据,请尝试这样的事情。
SELECT DB1.20180320.email
FROM DB1.20180320
left join DB2.20180319 on DB1.20180320.email = DB2.20180319.email
AND DB2.20180319.Status = 'active'
WHERE DB2.20180319.email IS null;
这应显示DB1.20180320中DB2.20180319中不存在的所有电子邮件
答案 1 :(得分:0)
NOT EXISTS
查询应该这样做。它返回存在于DB1中的电子邮件,但不返回DB2。
SELECT DB1.20180320.email
FROM DB1.20180320
WHERE NOT EXISTS(
SELECT 1
FROM DB2.20180319
WHERE DB1.20180320.email = DB2.20180319.email
AND DB2.20180319.Status = 'active'
)