基本上我有两个表几乎46列,现在我想要一些PL/SQL脚本,可以更新行,如果发现不相等从源表a到表B(需要更新),有一个主键的基础上比较将发生,更新后,如果发现不相等。
可以使用MERGE
假设您需要更新所有列,如果PK不匹配,那么这是一个通用语法:
MERGE INTO table_b
USING
(
SELECT column1, ... column48
FROM table_a
) a ON (b.pk = a.pk)
WHEN NOT MATCHED THEN UPDATE
SET a.column1 = b.column1,
.....
a.column46 = b.column46;
通过使用MERGE,我得到了满足我的问题中提到的要求的正确答案。
MERGE INTO TABLE_A
USING
(
SELECT * FROM TABLE_B
) T
ON
(
TABLE_A.PK=TABLE_B.PK
)
WHEN MATCHED THEN UPDATE
SET TABLE_A.COL1 = T.COL1,
...
TABLE_A COL46 = T.COL46;