Пример MERGE в MSSQL T-SQL
Простой пример MERGE для TSQL.
В примере подразумевается, что мы оперируем двумя одинаковыми по структуре таблицами (в реальной жизни это условие вовсе не обязательно).
Таблицы TargetTableи SourceTable — состоят всего из двух полей:
Id — некий идентификатор.
Name — Название объекта.
В примере ниже мы проверяем для всех записей из SourceTable — существует ли в таблице TargetTable запись с аналогичным Id и если существует, то меняем для этой записи поле Name в TargetTable, а если не существует то добавляем запись в TargetTable из SourceTable целиком.
MERGE TargetTable AS target -- таблица которую будем менять, таблица приемник
USING (SELECT Id, Name FROM SourceTable) AS source
ON (target.Id = source.Id) -- условие по которому сопоставляем источник и приемник
WHEN MATCHED AND target.Name!=source.Name -- Если такой уже есть, то проверяем не совпадает ли Name и если не совпадает то меняем
THEN UPDATE SET target.Name = source.Name -- обновляем
WHEN NOT MATCHED -- если такого Id нет в таблице target то добавляем
THEN INSERT VALUES(source.Id, source.Name) -- добавление записи
Вот и всё.