Teradata MERGE与DELETE和INSERT-语法?

时间:2018-11-17 07:58:21

标签: merge teradata

在以下情况下(如果可能的话),我一直在尝试寻找正确的语法:

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'关键字之间出现了预期的错误”

任何帮助表示感谢,谢谢!

1 个答案:

答案 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;