选择另一个数据库表中不存在的记录

时间:2018-03-20 19:25:36

标签: mysql database subquery

我正在尝试解决我认为简单查询的问题。

我有两个数据库,每个数据库都有一个表。

我想要做的是找到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行。

感谢。

2 个答案:

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