【问题标题】:How to Identify matching records in two tables?如何识别两个表中的匹配记录?
【发布时间】: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


【解决方案1】:

假设你有N columns,你可以加GROUP BY COL1,COL2,....COLN

select * from table1
    union all
select * from table2
    group by COL1, COL2, ... , COLN
    having count(*)>1;

参考:link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多