

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