Мне нужно обновить значения в таблице из другой таблицы, и если они не существуют, они должны быть вставлены.Так что я видел этот пример в здесь
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (...)
Теперь я хотел бы сделать это, но вместо предложения where со значением мне нужно проверить, совпадают ли столбцы в другой таблице.
Что-то вроде
UPDATE t1
SET
t1.status = t2.status
FROM
table1 t1, table2 t2
WHERE t1.reference = t2.reference and t1.section = t2.section
Я предполагаю, что это очень плохо с точки зрения производительности, и я хотел бы услышать некоторые другие предложения.
РЕДАКТИРОВАТЬ
Также, пожалуйста, если вы можете, я хотел бы услышать, почему ваш подход лучше, чем, например, использование слияния или объединения.Очень признателен.
РЕЗУЛЬТАТ
Вот подход, который я выбрал, проверив, насколько плохая производительность слияния сравнивается с обновлением, затем вставьте и попытайтесь протестировать подходы всех пользователей.то, что я решил, в основном использует ответ каждого из нас
UPDATE C
SET
C.ConsumoWeek01 = M.ConsumoWeek01
FROM
Consumos AS C
INNER JOIN @tempTable M
ON C.Referencia = M.Referencia
AND C.UAP = M.UAP
INSERT INTO
Consumos
SELECT *
FROM @tempTable M
WHERE NOT EXISTS
(
SELECT 1 FROM Consumos C
WHERE C.Referencia = M.Referencia
AND C.UAP = M.UAP
)