2011-07-01 49 views
0

我们有我们需要合并两个邮件列表,然后SQL合并然后两个表基于第三列表删除条目

  1. 确保有没有重复 和
  2. 比较针对第三列表(取消订阅列表)并删除列表中的任何名称。

我已经试过

SELECT DISTINCT * 
    FROM [table1.EmailAddress FROM table1 union all 
     SELECT table2.Emailaddress FROM table2]. AS [email]; 

这对于第一个问题,工作正常。然后我试图

where not exist (select table3.emailaddress from table3) 

添加到选择查询,无果......
我们使用Access 2000(不,我们不会升级);
所有表都有其他字段,其中没有任何字段与任何其他表匹配。
即使电子邮件地址字段也有不匹配的情况...

+1

也许这是一个复制粘贴的事情:该子查询/派生表看起来不正确。 – bernie

回答

3
select distinct email 
from (
    select Email 
    from Table1 
    union all 
    select Email 
    from Table2 
)x 
where not exists(
    select * from table3 t3 where t3.Email=x.Email 
) 

如果你有一个区分大小写的DB只是LOWER()所有的电子邮件列。

+2

+1如果您将Union All更改为Union –

+0

,则可以删除'distinct'。我正在运行此操作。这需要相当长的一段时间 - 我们有超过20万个名字加上取消订阅名单上的大约8.5万个名字... – Gio

+0

花了大约30多分钟,但它的工作!谢谢... – Gio

0

Access 2000是否支持minus运算符?

SELECT DISTINCT * FROM [[table1.EmailAddress FROM table1 union all SELECT table2.Emailaddress FROM table2]. AS [email] MINUS SELECT table3.EmailAddress FROM table3] 
+0

不,它没有。 –

相关问题