最近我在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
如果您需要更多信息,请提前致谢。
答案 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)