Пример MERGE в MSSQL T-SQL
MS 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) -- добавление записи
Вот и всё.
Оставить первый комментарий:
Курсоры в MSSQL - перебор выборки в цикле.
Команды манипулирования данными SELECT, UPDATE, DELETE работают сразу с группами строк. Эти группы, (читать далее...)
556Установка русской кодировки на уже созданную базу данных (смена COLLATION)
Полезный пример изменения кодировки (COLLATION) на уже созданной базе данных. В данном примере устан (читать далее...)
481Чистка логов базы данных MSSQL
Вообще процесс чистки логов должен проходить планово, и следить за этим и настраивать должен професс (читать далее...)
196MSSQL - передача таблицы или списка значений в процедуру ( C# .NET )
Часто бывает необходимость передать за один раз некоторый набор данных в процедуру, в этой публикаци (читать далее...)
160Получение полей таблицы в MSSQL - TSQL
Этот запрос возвращает набор полей таблицы со всеми характеристиками. Метод также применим и замечат (читать далее...)
130