MERGE INTO
有条件地更新行、删除行或将行插入到 Iceberg 表中。单个语句可以组合更新、删除和插入操作。有关语法,请参阅 MERGE INTO。
注意
MERGE INTO
是事务性的,仅支持用于 Athena 引擎版本 3 中的 Apache Iceberg 表。
以下示例从表 t
中删除源表 s
中的所有客户。
MERGE INTO accounts t USING monthly_accounts_update s ON t.customer = s.customer WHEN MATCHED THEN DELETE
以下示例使用源表 s
中的客户信息更新目标表 t
。如果表 t
与表 s
中的客户行匹配,则该示例会增加表 t 中的购买量。如果表 t
与表 s
中的客户行不匹配,则该示例会将表 s
的客户行插入到表 t
中。
MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)
以下示例使用源表 s
中的信息有条件地更新目标表 t
。该示例删除了源地址为 Centreville 的所有匹配的目标行。对于所有其他匹配的行,该示例会添加源采购并将目标地址设置为源地址。如果目标表中没有匹配项,该示例会插入源表中的行。
MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED AND s.address = 'Centreville' THEN DELETE WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases, address = s.address WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)