SQL объединяет две таблицы, а затем удаляет записи на основе третьего списка - PullRequest
0 голосов
/ 02 июля 2011

У нас есть два списка рассылки, которые нам нужно объединить, а затем

  1. убедитесь, что нет дубликатов и
  2. сравнить с третьим списком (списком отписки) и удалить все имена, которые есть в этом списке.

Я пробовал

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

, который отлично работает для 1-й задачи. Затем я попытался добавить

where not exist (select table3.emailaddress from table3) 

на этот запрос выбора, безрезультатно ...
Мы используем Access 2000 (нет, мы не будем обновлять);
Все таблицы имеют другие поля, ни одно из которых не соответствует другим таблицам.
Даже поля адреса электронной почты имеют несовпадающие регистры ...

Ответы [ 2 ]

3 голосов
/ 02 июля 2011
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
)

Если у вас БД с учетом регистра, просто LOWER() все столбцы электронной почты.

0 голосов
/ 02 июля 2011

Поддерживает ли Access 2000 оператор минус?

SELECT DISTINCT * FROM [[table1.EmailAddress FROM table1 union all SELECT table2.Emailaddress FROM table2]. AS [email] MINUS SELECT table3.EmailAddress FROM table3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...