Merge를 이용해 다른 테이블의 값으로 기존 테이블의 값을 바꾸거나 새로 추가할 수 있다.
상황
아래와 같이 두 개의 테이블이 있을때, table1의 데이터를 table2에 삽입하거나, 이미 존재하는 경우 table1의 값으로 변경하고 싶은 경우
- table1: (ID, Code, Name)
- table2: (ID, Code, Name)
쿼리
다음은 table1의 id 값이 table2에 존재할 경우 table1의 name 값으로 table1의 name 값을 수정하고, table1의 id 값이 table2에 존재하지 않을 경우 table1의 name 값을 table2에 새로 추가하는 쿼리이다.
MERGE table2 AS target
USING table1 AS source
ON
target.id=source.id
WHEN MATCHED
THEN
UPDATE
SET target.id=source.id,
target.name=source.name
WHEN NOT MATCHED BY Target THEN
INSERT (id, name) VALUES (id, name);
댓글남기기