

# MERGE INTO
<a name="querying-iceberg-merge-into"></a>

条件付きで Iceberg テーブルに行を更新、削除、または挿入します。単一のステートメントで、更新、削除、挿入のアクションを組み合わせることができます。構文については、「[MERGE INTO](merge-into-statement.md)」を参照してください。

**注記**  
`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)
```