如何解决找出 2 个表之间的差异
我有 2 个表,我想根据电子邮件找出 2 个表之间的区别
表 1 是一个历史表,有重复的电子邮件地址,但表 2 已为电子邮件删除重复项(没有重复项)。
表一
Email. validity. recency. last Modified
aa@gmail.com 1 0-3. 1/21/2020
ab@gmail.com 0 12-16. 1/22/2020
aa@gmail.com. 1 NULL 12/20/2019
aa@gmail.com 1 12-16 11/30/2018
ga@gmail.com. 1 0-3 1/18/2020
表 2
Email. validity recency last Modified type partner
aa@gmail.com 1 0-3 1/21/2020. C. Goo
ab@gmail.com. 0. 12-16. 1/22/2020. P. Azz
ac@gmail.com 1 0-3 1/18/2020. P. Goo
预期输出
Email. validity. recency. last Modified
ga@gmail.com 1 0-3 1/18/2020
我想找到表 1 中出现的所有电子邮件的列表,而不是表 2。据我所知,join 只能用于查找子集/相似性。如何找到两个表之间的差异?谢谢。
解决方法
您可以根据键列使用 NOT IN
。
假设 Email
作为这里的关键列是示例 SQL。
SELECT distinct * FROM TABLE1
WHERE
validity=1 AND
Email
NOT IN (
SELECT Email FROM TABLE2 WHERE validity=1
)
你可以像你提到的那样使用 join 。在这种情况下,只需选择 Table2 和 viola 中不存在的那些,您将获得不存在的记录。
SELECT *
FROM Table1 t1
LEFT JOIN Table2 t2 ON T1.Email = T2.Email
WHERE T2.Email IS NULL
,
如果我理解正确,您只需要not exists
:
select t1.*
from table1 t1
where not exists (select 1
from table2 t2
where t2.email = t1.email
);
如果合适,您可以在逻辑中使用 validity
。但是问题的描述没有提到除email
之外的任何条件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。