这是场景:
我有2个数据表,一个是2009年版本,另一个是2010年版本。每个表的主键是组合键。我知道每一行都有不同数量的行,我需要找出差异。
通常,在“常规”主键设置中,我只会在其他表的主键列表中查找主键值。但是我不知道如何使用复合主键(甚至是可能的话)执行此操作。
那么,如何比较这两个表中的行呢?
编辑:更具体地说,我试图找到表之间的 差异 ,而不是共同的行
只需使用基于您的组合键的条件进行完全外部联接:
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
where t09.k1 is null or t10.k1 is null