我有一个来自一个数据库的电子邮件列表,我想根据另一个数据库中未订阅的电子邮件列表进行检查。如果它们存在于两个列表中,那么我不希望它们返回。
SELECT distinct `payer_email` as `email`
FROM `database1`.`paypal_table`
WHERE `payer_email` !=
(SELECT `email`
FROM `database2`.`Unsubscribers`
WHERE `email`
LIKE `database1`.`paypal_table`.`payer_email`)
答案 0 :(得分:6)
我会用:
不存在(选择.....)
我已经了解到,当使用更大的数据集时,EXISTS的性能优于IN。
答案 1 :(得分:4)
尝试:
`payer_email` NOT IN (SELECT `email` FROM `database2`.`Unsubscribers`)
答案 2 :(得分:1)
您可以使用join语句执行此操作。基本上,您尝试在他们的电子邮件地址上加入这两个表,并查看加入无法找到匹配的位置。
SELECT DISTINCT email FROM table1
LEFT JOIN table2 ON table1.email == table2.email
WHERE table2.email IS NULL
答案 3 :(得分:0)
试试这个 -
select distinct(email) from table 1 where email not in (select distinct(email) from table 2)
union
select distinct(email) from table 2 where email not in (select distinct(email) from table 1)
欢呼声