

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 合併為
<a name="querying-iceberg-merge-into"></a>

有條件地更新、刪除資料列或將其插入至 Iceberg 資料表。單一陳述式可以組合更新、刪除和插入動作。如需語法，請參閱[合併為](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`。此範例會刪除來源地址為森特維爾的任何相符的目標資料列。對於所有其他相符的資料列，此範例會新增來源購買項目，並將目標地址設定為來源地址。如果目標資料表中沒有相符項目，則範例會從來源資料表插入資料列。

```
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)
```