一尘不染

如何比较2个具有复合主键的表中的行?

sql

这是场景:

我有2个数据表,一个是2009年版本,另一个是2010年版本。每个表的主键是组合键。我知道每一行都有不同数量的行,我需要找出差异。

通常,在“常规”主键设置中,我只会在其他表的主键列表中查找主键值。但是我不知道如何使用复合主键(甚至是可能的话)执行此操作。

那么,如何比较这两个表中的行呢?


编辑:更具体地说,我试图找到表之间的 差异 ,而不是共同的行


阅读 177

收藏
2021-03-08

共1个答案

一尘不染

只需使用基于您的组合键的条件进行完全外部联接:

select t09.*, t10.*
from table2009 as t09
  full outer join table2010 as t10
    on t09.k1 = t10.k1 and t09.k2 = t10.k2 and ...

如果只希望在结果集中看到不匹配的行(差异),则在where子句中过滤它们:

where t09.k1 is null or t10.k1 is null
2021-03-08