两个电子邮件地址表,返回一个不在另一个中的地址

时间:2009-05-28 19:09:03

标签: sql mysql

我有一个来自一个数据库的电子邮件列表,我想根据另一个数据库中未订阅的电子邮件列表进行检查。如果它们存在于两个列表中,那么我不希望它们返回。

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`)

4 个答案:

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

欢呼声