条件付きで Iceberg テーブルに行を更新、削除、または挿入します。単一のステートメントで、更新、削除、挿入のアクションを組み合わせることができます。構文については、「MERGE INTO」を参照してください。
注記
MERGE INTO
はトランザクションで、Athena エンジンバージョン 3 の Apache Iceberg テーブルでのみサポートされています。
次の例では、ソーステーブル s
にあるテーブル t
からすべての顧客を削除します。
MERGE INTO accounts t USING monthly_accounts_update s
ON t.customer = s.customer
WHEN MATCHED
THEN DELETE
次の例では、ソーステーブル s
の顧客情報でターゲットテーブル t
を更新します。テーブル s
内の顧客の行が一致する顧客行が t
にある場合、この例ではテーブル 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)