"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" 값을 새로 삽입합니다.
'IT > DB' 카테고리의 다른 글
[Tibero] 한글,영문, 숫자 정렬 하기. (0) | 2024.01.25 |
---|---|
[MSSQL] 임시테이블(@테이블,#테이블) (0) | 2023.06.20 |
TIBERO에서 사용되는 WITH 절(인라인뷰 대신) (0) | 2023.04.24 |
mssql vs tibero 타입/함수 비교 (0) | 2023.03.15 |
특정 TCP 포트 또는 동적 포트에서 수신 대기하도록 SQL Server 인스턴스를 구성하는 방법 (0) | 2023.02.14 |