如果 2 列之间存在任何值不匹配,则仅使用源 table 更新目标 table 的更改行

Update the changed row of target table only using source table if there is any value mismatch between 2 columns

Table T1

ID  C1  C2  C3
--  --  --  --
1   x   y   z
2   p   q   r
3   a   b   c

Table T2

1   x   y   z
2   p   q1  r
3   a   b   c1

需要将 T2 的所有值更新到 T1 中以确保 table 应该具有相同的 value.This 可以通过在 table 中合并 statement.But 来实现 T1 有一个列update_timestamp 仅当 2 table.In 之间存在任何不匹配时才会更新 update_timestamp 合并 update_timestamp 更新,如果没有不匹配 also.In 上面的示例 update_timestamp 列更新仅 ID 号 2 和 3。

MERGE INTO T1
USING T2
ON (T1.ID = T2.ID)
WHEN MATCHED THEN
UPDATE SET T1.C1 = T2.C1,T1.C2 = T2.C2,T1.C3 = T2.C3,T1.update_timestamp=SYSDATE;

试试这个(如果您跟踪所有 3 列的更改 - c1、c2 和 c3):

MERGE INTO T1
USING (
  select id, c1, c2, c3 from T2
  minus
  select id, c1, c2, c3 from T1
) T2
ON (T1.ID = T2.ID)
WHEN MATCHED THEN
UPDATE SET T1.C1 = T2.C1,T1.C2 = T2.C2,T1.C3 = T2.C3,T1.update_timestamp=SYSDATE;