我有一个场景,我希望在两个postgres表之间找到delta。假设有表A和表B.我想找到表A中新添加的记录,然后我需要在表A中找到更新的记录,然后在表A中找到与表B相关的记录。 / p>
最好的方法是什么,因为我需要稍后根据更新/删除/插入标记来处理这些。
答案 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
将比较两个表中的所有列,从而筛选出两者中存在的所有行并且相同。因此,结果是其中一个表中缺少的行或具有不同的值。