【发布时间】:2021-09-08 04:11:06
【问题描述】:
我有两个具有相同列名的表。每个表共有 40 列。这两个表具有相同的唯一 ID。如果我对 ID 列执行内部连接,我会得到 80% 的数据匹配。但是,我想看看这个匹配是否在每一列中都有完全相同的数据。
如果有几行,比如 50-100,我可以执行按 ID 排序的简单联合操作并手动检查数据。但是这两个表都包含超过 5000 条记录。
每个列上的连接是有效的解决方案还是我需要执行连接?
【问题讨论】:
-
在 postgresql 中可以像
select * from tableA inner join tableb on(tablea.* = tableB.*)那样做到这一点 -
select * from a union select * from b然后按ID列分组并检查having count(*) > 1 -
所有行都是唯一的吗?特别是要加入的列?如果 A 中有 6k 条记录,B 中有 5k 条记录,下面将告诉您行如何完全匹配,假设两个表都没有重复。
SELECT 11000-COUNT(*) present_both, COUNT(*)-5000 present_a_only, COUNT(*)-6000 present_b_only FROM (SELECT * FROM a UNION SELECT * FROM b) combined
标签: sql mysql-workbench