Мне нужно выполнить upsert из выбора, например this , но в SQL Server. Я нашел кого-то, кто делает upsert в SQL Server здесь , но это не из избранных.
Мой запрос сейчас выглядит примерно так:
INSERT INTO (table1) (...)
SELECT (...)
FROM (table 2)
WHERE X NOT IN (SELECT Y from (table1) WHERE Y IS NOT NULL)
Но я не могу понять, как добавить часть обновления. Я хотел бы добавить часть обновления, так как в 99% случаев это будет вставка.
Редактировать: этот код работал бы, если бы я мог сделать это с SELECT
:
BEGIN TRY
INSERT INTO table1 (id, name, itemname, itemcatName, itemQty)
VALUES ('val1', 'val2', 'val3', 'val4', 'val5')
END TRY
BEGIN CATCH
UPDATE table1
SET name = 'val2',
itemname = 'val3',
itemcatName = 'val4',
itemQty = 'val5'
WHERE id = 'val1'
END CATCH