MySQL:只在不在另一个表中的情况下从一个表中选择电子邮件?

时间:2009-06-16 16:57:26

标签: mysql

我打算创建一个名为donotemail的表,其中包含要求从我们的电子邮件列表中删除的人的电子邮件地址。我有一个名为users的表,其中包含一个电子邮件列。如何选择来自用户的所有电子邮件,但前提是电子邮件地址不在donotemail表中?

谢谢!

5 个答案:

答案 0 :(得分:15)

尝试

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

它避免了需要子查询。

答案 1 :(得分:3)

 select u.email from users u where u.email not in (select email from donotemail)

OR

从u.email!= d.email

中选择u.email用户u inner join donotemail

编辑:加入不起作用

答案 2 :(得分:2)

试试这个:

SELECT email
FROM users u
WHERE NOT EXISTS(
    SELECT 1 FROM no_mail_users nmu
    WHERE nmu.id = u.id
)

答案 3 :(得分:1)

为什么不在电子邮件表中添加另一列,标记为“活动”,当设置为1时,当前正在通过电子邮件发送,当设置为0时,它不再是电子邮件,那么您可以根据该交换机选择和过滤?

干杯

答案 4 :(得分:0)

select email from users where email not in (select email from donotemail)