

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

Apache Iceberg 테이블에 행을 조건부로 업데이트, 삭제 또는 삽입합니다. 단일 명령문으로 업데이트, 삭제 및 삽입 작업을 결합할 수 있습니다.

**참고**  
`MERGE INTO`은 트랜잭션이며 Athena 엔진 버전 3의 Apache Iceberg 테이블에 대해서만 지원됩니다.

## 시놉시스
<a name="merge-into-statement-synopsis"></a>

Iceberg 테이블에서 행을 조건부로 업데이트, 삭제 또는 삽입하려면 다음 구문을 사용합니다.

```
MERGE INTO target_table [ [ AS ]  target_alias ]
USING { source_table | query } [ [ AS ] source_alias ]
ON search_condition
when_clause [...]
```

*when\$1clause*는 다음 중 하나입니다.

```
WHEN MATCHED [ AND condition ]
    THEN DELETE
```

```
WHEN MATCHED [ AND condition ]
    THEN UPDATE SET ( column = expression [, ...] )
```

```
WHEN NOT MATCHED [ AND condition ]
    THEN INSERT (column_name[, column_name ...]) VALUES (expression, ...)
```

`MERGE`는 서로 다른 `MATCHED` 조건을 가진 임의 개수의 `WHEN` 절을 지원합니다. 조건 절은 `MATCHED` 상태와 일치 조건에 따라 선택된 첫 번째 `WHEN` 절에서 `DELETE`, `UPDATE` 또는 `INSERT` 작업을 실행합니다.

각 소스 행에 대해 `WHEN` 절이 순서대로 처리됩니다. 일치하는 첫 번째 `WHEN` 절만 실행됩니다. 후속 절은 무시됩니다. 하나의 대상 테이블 행이 둘 이상의 소스 행과 일치할 경우 사용자 오류가 발생합니다.

소스 행이 `WHEN` 절과 일치하지 않고 `WHEN NOT MATCHED` 절이 없는 경우 해당 소스 행은 무시됩니다.

`UPDATE` 작업이 있는 `WHEN` 절에서 열 값 표현식은 대상 또는 소스의 모든 필드를 참조할 수 있습니다. `NOT MATCHED`의 경우 `INSERT` 표현식은 소스의 모든 필드를 참조할 수 있습니다.

**예**  
다음 예제에서는 첫 번째 테이블에 행이 없는 경우 두 번째 테이블의 행을 첫 번째 테이블에 병합합니다. `VALUES` 절에 나열된 열에 소스 테이블 별칭이 접두사로 사용되어야 합니다. `INSERT` 절에 나열된 대상 열에는 이 접두사를 사용해서는 *안 됩니다*.

```
MERGE INTO iceberg_table_sample as ice1
USING iceberg2_table_sample as ice2
ON ice1.col1 = ice2.col1
WHEN NOT MATCHED 
THEN INSERT (col1)
      VALUES (ice2.col1)
```

더 많은 `MERGE INTO` 예제는 [Iceberg 테이블 데이터 업데이트](querying-iceberg-updating-iceberg-table-data.md) 섹션을 참조하세요.