MySQL: выбрать электронную почту из одной таблицы, только если нет в другой таблице? - PullRequest
8 голосов
/ 16 июня 2009

Я собираюсь создать таблицу под названием donotemail, которая будет содержать адреса электронной почты людей, которые просят удалить из нашего списка рассылки. У меня есть еще одна таблица, называемая пользователями со столбцом электронной почты. Как я могу выбрать все электронные письма от пользователей, но только если адрес электронной почты отсутствует в таблице donotemail?

Спасибо!

Ответы [ 5 ]

15 голосов
/ 16 июня 2009

Попробуйте

SELECT Email.address
FROM Email LEFT OUTER JOIN DoNotMail on Email.address = DoNotMail.address
WHERE DoNotMail.address is null

Это позволяет избежать необходимости подзапроса.

3 голосов
/ 16 июня 2009
 select u.email from users u where u.email not in (select email from donotemail)

OR

выберите u.email из пользователей u внутреннее присоединение donotemail d на u.email! = D.email

РЕДАКТИРОВАТЬ: объединение не работает

2 голосов
/ 16 июня 2009

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

SELECT email
FROM users u
WHERE NOT EXISTS(
    SELECT 1 FROM no_mail_users nmu
    WHERE nmu.id = u.id
)
1 голос
/ 16 июня 2009

Почему бы просто не добавить еще один столбец в таблицу электронной почты с пометкой «Активный», если для «1» он в настоящее время отправляет электронную почту, а для «0» он больше не отправляет электронные письма, то вы можете просто выбирать и фильтровать на основе этого переключателя?

Приветствия

0 голосов
/ 16 июня 2009
select email from users where email not in (select email from donotemail)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...