在以下情况下(如果可能的话),我一直在尝试寻找正确的语法:
MERGE INTO TAB_A tgt
USING TAB_B src ON (src.F1 = tgt.F1 AND src.F2 = tgt.F2
WHEN MATCHED THEN DELETE
ELSE INSERT (tgt.*) VALUES (src.*)
背景:临时表包含对目标表的修复,因为它包含两种类型的行: 将要删除的错误行(与目标表中的行匹配),以及应插入的“更正”行(它将替换所有“删除”行)。
从本质上讲:删除所有匹配的内容; 插入任何不匹配的内容。
我当前遇到的错误是:
“语法错误:在'DELETE'关键字和'ELSE'关键字之间出现了预期的错误”
任何帮助表示感谢,谢谢!
答案 0 :(得分:0)
您可以利用MultiStatement DELETE和INSERT语句将临时表中的数据纠正到目标表中
DELETE FROM TAB_A WHERE EXISTS (SELECT 1 FROM TAB_B WHERE TAB_A.F1 = TAB_B.F1 AND TAB_A.F2 = TAB_B.F2)
;INSERT INTO TAB_A SELECT * FROM TAB_B;