Две таблицы адресов электронной почты, возвращать, где одна не находится в другой - PullRequest
1 голос
/ 28 мая 2009

У меня есть список электронных писем из одной базы данных, которые я хочу сравнить со списком отписавшихся электронных писем из другой базы данных. Если они есть в обоих списках, я не хочу, чтобы они возвращались.

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 ]

6 голосов
/ 28 мая 2009

Я бы использовал:

ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБРАТЬ .....)

Я узнал, что EXISTS лучше работает, чем IN, при использовании больших наборов данных.

4 голосов
/ 28 мая 2009

Попробуйте:

`payer_email` NOT IN (SELECT `email` FROM `database2`.`Unsubscribers`)
1 голос
/ 28 мая 2009

Вы можете сделать это с помощью оператора соединения. По сути, вы пытаетесь объединить две таблицы по их адресам электронной почты и посмотреть, где при объединении не удалось найти совпадение.

SELECT DISTINCT email FROM table1
       LEFT JOIN table2 ON table1.email == table2.email
       WHERE table2.email IS NULL
0 голосов
/ 28 мая 2009

Попробуйте это-

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)

ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...