如果MYSQL与表3不匹配,它们会从2个表中获取数据?

时间:2011-01-07 15:06:33

标签: mysql sql

最近我在php中的MySql类上做了一些工作,并且由于优化了我的代码的某些部分,我想缩小一些函数倒数。 我真的很难与3个或更多的表一起工作,因为它在那里变得非常混乱。我没有很多使用MySql或任何其他数据库的经验,但我知道基础知识和更多。

对于这个问题,我无法想象我们如何做出这样的声明:

[table1 - users.email] AND [table2 - subscribers.email] NOT IN [table3 - check.email]

看起来像“从[table1]和[table2]获取所有不在[table3]中的唯一用户电子邮件并将其放入1个列表中

的单词

按1列表我的意思与此声明相同

  

从用户选择u.email AS u UNION   SELECT s.email FROM subscriber AS s

如果您需要更多信息,请提前致谢。

4 个答案:

答案 0 :(得分:3)

你离开加入第3个表然后做“t3.field IS NULL”

示例:

SELECT u.email FROM users AS u 
LEFT JOIN table3 t3 ON u.email = t3.email
WHERE t3.email IS NULL
UNION 
SELECT s.email FROM subscribers AS s
LEFT JOIN table3 t3 ON s.email = t3.email
WHERE t3.email IS NULL

您还需要使其与众不同,以获得独特的结果。

答案 1 :(得分:0)

也许是这样的

  select *
   from users
   left join subscribers on users.email = subscribers.email
   left join check on check.email = users.email
   where table3.email = null

请注意,这与其他一些答案不同 - 它假定订阅者是一个相关的表。答案措辞的方式(以及其他答案)假设订阅者和用户是互斥的。

答案 2 :(得分:0)

这个怎么样:

SELECT Email From 
(
   Select Email From Table1
   UNION ALL 
   SELECT Email From Table2
) AS T
WHERE T.Email NOT IN (SELECT Email From Table3)

这里的表现不如JOIN解决方案那么好。

答案 3 :(得分:0)

根据你的数据库,这样的事情应该有用......


select u1.email 
from users u1 
where u1.email not in (select table3.email from table3) 
union
select s1.email 
from subscribers s1 
where s1.email not in (select table3.email from table3)