如果 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;
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;