mysql与内连接相对

时间:2011-01-03 14:23:51

标签: mysql sql

我想使用我的数据库通过电子邮件与我的用户联系。我想确保我不会意外地联系同一个用户两次。为此,我有一张表来跟踪联系人和何时联系。

当我执行MYSQL查询时,我想从email表中选择电子邮件,并确保contacted表中不存在这些条目。

要在一个句子中对其进行短语:如果Email_Table中的电子邮件不在Contacted_Table中,请选择该电子邮件

也许有一种完全不同的方法。我对所有建议持开放态度:)谢谢:))

3 个答案:

答案 0 :(得分:31)

试试这个

SELECT email FROM email_table e 
LEFT JOIN contacted_table c ON e.email = c.email
WHERE c.email IS NULL

答案 1 :(得分:26)

select email 
from Email_Table t1 
where not exists (select email 
                  from Contacted_table t2 
                  where t1.email = t2.email)

select email 
from Email_Table t1 
where email not in (select email 
                    from Contacted_table)

答案 2 :(得分:11)

如果您尝试像这样执行左连接:

SELECT users.email, contacted.email
FROM users LEFT JOIN contacted ON users.email = contacted.email

您将得到类似的结果:

users.email | contacted.email
-----------------------------
aa@aa.com   | aa@aa.com
bb@bb.com   | bb@bb.com
cc@cc.com   | cc@cc.com
dd@dd.com   | NULL
ee@ee.com   | NULL

您的目标是获取contacted表中没有匹配项的记录,因此您的查询将是:

SELECT users.email
FROM users LEFT JOIN contacted ON users.email = contacted.email
WHERE contacted.email IS NULL