У меня есть сценарий, в котором я получаю данные как разделитель запятой. Например, данные в таблице аналогичны приведенным ниже.SQL значения, разделенные запятой, операция dml
EmpID Location Active
109 2 1
109 3 1
109 4 1
Теперь я получаю данные как EMPID 109, Location (1,2,5). Что мне нужно сделать, это вставить 1,5, поскольку они не существуют в табличных данных, Update 2, как это существует в таблице. Установите 3,4 в таблице на активный 0, поскольку они существуют в табличных данных, но не существуют в данных, которые мы получили. Я пытаюсь сделать все это в одном sql вместо использования нескольких sql.
Вы можете сделать это с помощью [MERGE] (https://msdn.microsoft.com/en-GB/library/bb510625.aspx). –
MERGE - только часть решения здесь. Поскольку вы получаете список значений с разделителями, вам сначала нужно разобрать или разбить это на значения. Вот большой ресурс для этого шага. http://sqlperformance.com/2012/07/t-sql-queries/split-strings Тогда вы можете использовать MERGE для выполнения upsert, который вы ищете. Но будьте осторожны ... использование MERGE для upserts может вызвать проблемы. https://connect.microsoft.com/SQLServer/feedback/details/723696/basic-merge-upsert-causing-deadlocks –