📜  HP Vertica 中的合并操作

📅  最后修改于: 2021-09-08 15:54:54             🧑  作者: Mango

在 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 ),因此我们通过从源表中获取值来更新结果表中的值.