Postgres DB中两个表格之间的变化/ Deltas
问题描述:
我有一个场景,我想在两个postgres表格之间找到增量。假设有表A和表B,我想查找表A中新添加的记录,那么我需要在表A中找到更新的记录,然后查找表A中相对于表B删除的记录。Postgres DB中两个表格之间的变化/ Deltas
什么是最好的办法,因为我需要稍后处理那些基于更新/删除/插入标志。
答
你可以做一个完全外部联接:
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
将比较两个表中的所有列,因此会过滤出两者中存在且相同的所有行。所以结果是在一个表中缺少的行或者具有不同的值。
那些表具有共同的唯一列吗? –
是的两个表都是相同的。 – AB90