본문 바로가기
IT/DB

[티베로] MERGE 사용

by 불멸남생 2023. 4. 26.

"Merge"는 SQL에서 데이터의 삽입, 갱신, 삭제를 한 번에 처리할 수 있는 구문입니다. "Merge" 구문은 일반적으로 두 개의 테이블을 조인하고, 일치하는 행이 있으면 업데이트하거나, 일치하지 않으면 새로운 행을 삽입하거나, 조인 결과에만 있는 행은 삭제할 수 있습니다.

티베로에서도 "Merge" 구문을 지원하며, 아래와 같은 형식으로 사용할 수 있습니다.

 

// sql

MERGE INTO [대상 테이블명]
USING [소스 테이블명]
ON [조인 조건]
WHEN MATCHED THEN [일치하는 경우 처리 구문]
WHEN NOT MATCHED THEN [일치하지 않는 경우 처리 구문]

예를 들어, "employees" 테이블과 "employee_updates" 테이블이 있다고 가정해 보겠습니다. "employee_updates" 테이블에는 "employees" 테이블에 존재하는 직원들 중 일부의 정보가 갱신된 데이터가 있습니다. 이때, "employees" 테이블의 데이터를 "employee_updates" 테이블의 데이터로 갱신하고, "employee_updates" 테이블에 존재하지 않는 새로운 직원 정보를 "employees" 테이블에 삽입하려면 아래와 같은 "Merge" 구문을 사용할 수 있습니다.

 

// sql

MERGE INTO employees AS e
USING employee_updates AS u
ON e.emp_id = u.emp_id
WHEN MATCHED THEN
    UPDATE SET e.emp_name = u.emp_name, e.emp_salary = u.emp_salary
WHEN NOT MATCHED THEN
    INSERT (e.emp_id, e.emp_name, e.emp_salary) VALUES (u.emp_id, u.emp_name, u.emp_salary);

위 예제에서, "employees" 테이블과 "employee_updates" 테이블은 "emp_id"라는 공통된 칼럼을 가지고 있습니다. "ON" 구문에서는 이 두 테이블의 "emp_id"가 일치하는 경우를 찾습니다. "WHEN MATCHED THEN" 구문에서는 일치하는 경우, "employees" 테이블의 "emp_name"과 "emp_salary" 값을 "employee_updates" 테이블의 값으로 경신합니다. "WHEN NOT MATCHED THEN" 구문에서는 일치하지 않는 경우, "employees" 테이블에 "employee_updates" 테이블에 존재하는 "emp_id", "emp_name", "emp_salary" 값을 새로 삽입합니다.

반응형