在没有多个连接的情况下查找两个表中的差异
Posted
技术标签:
【中文标题】在没有多个连接的情况下查找两个表中的差异【英文标题】:Find differences in both tables without multiple joins 【发布时间】:2019-12-16 13:24:17 【问题描述】:比较两个数据集后,我想提取以下信息:
仅存在于表 A 中的行 仅存在于表 B 中的行 加入后非键值差异解决此问题的首选方法是什么?有没有办法做到这一点而不必分别进行 LEFT 和 RIGHT 连接?
【问题讨论】:
请提供样本数据和期望的结果。 可能是外连接 【参考方案1】:听起来你想要FULL OUTER JOIN
。这将为您提供两个表中的所有行,并连接匹配键的行。然后您可以查看哪些行仅存在于一个表中,并比较两个表中的行的值。
【讨论】:
【参考方案2】:我通常会为此使用group by
,所以我不确定对多个连接的引用是什么。
select col1, col2, col3, sum(in_a) as a_cnt, sum(in_b) as b_cnt
from ((select col1, col2, col3, 1 as in_a, 0 as in_b
from a
) union all
(select col1, col2, col3, 0 as in_a, 1 as in_b
from b
)
) ab;
【讨论】:
以上是关于在没有多个连接的情况下查找两个表中的差异的主要内容,如果未能解决你的问题,请参考以下文章