2011-07-01 24 views
0

我々は結合する必要がある2つのメーリングリスト、その後、SQL二つのテーブルは、第3のリストに基づいてエントリを削除マージ

  1. 重複しないことを確認し と
  2. は、第三のリストと比較を持っています(登録解除リスト)を削除し、そのリストにある名前を削除します。

私が第一の問題のために正常に動作します

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

を試してみました。私は、...無駄に、その選択クエリに我々がアクセス2000(ノー我々はアップグレードされません)を使用している

where not exist (select table3.emailaddress from table3) 

を追加しようとしました。
すべてのテーブルには他のフィールドがあり、他のフィールドと一致するものはありません。
でもEMAILADDRESSフィールドが非一致するケースを持っている...

+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に変更した場合、おそらく 'distinct'を削除することができます –

+0

私は今までこれを実行しています。それはかなりの時間を取っています - 私たちは結合された200kを超える名前と、約8.5kの名前を受け取り禁止リストに持っています... – Gio

+0

それは約30 +分がかかりました!ありがとう... – Gio

0

Access 2000がマイナス演算子をサポートしていますか?

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

いいえ、そうではありません。 –

関連する問題