在 HP Vertica 中,合并操作是插入和更新操作的组合。指定的条件用于更新值。
源表可以包括新数据和现有数据。如果目标表不包含任何源表的记录(新的或现有的),则 MERGE 会将所有源数据插入到目标中。如果目标表已包含该行,则使用合并操作将目标表数据的值更新为源表数据。
句法:
MERGE INTO schema_name.target_table
USING schema_name.source_table ON [condition]
WHEN MATCHED THEN UPDATE SET col1=val1...
WHEN NOT MATCHED THEN INSERT VALUES (source.col1, ..);
例子:
MERGE INTO target TGT
USING source SRC
ON SRC.A=TGT.A
WHEN MATCHED THEN
UDATE SET A=TGT.A, B=TGT.B, C=TGT.C, D=TGT.D, E=TGT.E
WHEN NOT MATCHED THEN
INSERT VALUES (SRC.A, SRC.B, SRC.C, SRC.D, SRC.E);
解释:
新行“908 – KARAN – 99”和“777 – MANU – 67”作为新行插入到结果表中。但是我们看到行“201 – TIM – 94”存在于源表和目标表中(条件 SOURCE.NUMBER = TARGET.NUMBER ),因此我们通过从源表中获取值来更新结果表中的值.