Postgres DB中两个表之间的更改/增量

时间:2016-11-04 09:50:10

标签: postgresql

我有一个场景,我希望在两个postgres表之间找到delta。假设有表A和表B.我想找到表A中新添加的记录,然后我需要在表A中找到更新的记录,然后在表A中找到与表B相关的记录。 / p>

最好的方法是什么,因为我需要稍后根据更新/删除/插入标记来处理这些。

1 个答案:

答案 0 :(得分:1)

您可以进行完全外部联接:

select id,
       case 
         when s.id is null then 'Deleted in source table'
         when t.id is null then 'Added in source table'
         else 'Data Changed'
       end as status
from source s 
  full outer join target t using (id)
where s is distinct from t; 

这假设两个表都是一个名为id的唯一列。

where s is distinct from t将比较两个表中的所有列,从而筛选出两者中存在的所有行并且相同。因此,结果是其中一个表中缺少的行或具有不同的值。

在线示例:http://rextester.com/LKY13449