本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
合併為
有條件地更新、刪除資料列或將其插入至 Apache Iceberg 資料表。單一陳述式可以組合更新、刪除和插入動作。
注意
MERGE INTO 是交易型的並且僅由 Athena 引擎版本 3 中的 Apache Iceberg 資料表支援。
概要
若要有條件地更新、刪除或插入 Iceberg 資料表中的資料列,請使用下列語法。
MERGE INTO target_table [ [ AS ] target_alias ]
USING { source_table | query } [ [ AS ] source_alias ]
ON search_condition
when_clause [...]
when_clause 是下列其中一項:
WHEN MATCHED [ AND condition ] THEN DELETE
WHEN MATCHED [ AND condition ] THEN UPDATE SET ( column = expression [, ...] )
WHEN NOT MATCHED [ AND condition ] THEN INSERT (column_name[,column_name...]) VALUES (expression, ...)
MERGE 支援具有不同 MATCHED 條件之任意數量的 WHEN 子句。條件子句會在由 MATCHED 狀態和符合條件選取的第一個 WHEN 子句中執行 DELETE、UPDATE 或 INSERT 運算。
針對每個來源資料列,會依序處理 WHEN 子句。只會執行第一個相符的 WHEN 子句。其餘子句會遭到忽略。當單一目標資料表資料列與多個來源資料列相符時,就會引起使用者錯誤。
如果來源資料列不與任何 WHEN 子句相符且沒有 WHEN NOT MATCHED 子句,則會忽略來源資料列。
在具有 UPDATE 運算的 WHEN 子句中,資料欄值表達式可以指代目標或來源的任何欄位。若是 NOT
MATCHED,INSERT 表達式可以指代來源的任何欄位。
範例
下列範例會將第二個資料表中的資料列合併至第一個資料表 (如果第一個資料表中不存在資料列)。請注意,VALUES 子句中列出的資料欄必須加上來源資料表別名的字首。INSERT 子句中列出的目標資料欄不得使用字首。
MERGE INTO iceberg_table_sample as ice1 USING iceberg2_table_sample as ice2 ON ice1.col1 = ice2.col1 WHEN NOT MATCHED THEN INSERT (col1) VALUES (ice2.col1)
如需更多 MERGE INTO 範例,請參閱 更新 Iceberg 資料表資料。