MSSQL Вставить или обновить, если существует

Вопрос: Нужно вставить строку, если она не существует, и обновить, если она существует. Я нашел это решение для MySQL: INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE имя = "А", возраст = 19 Но я не могу найти подобное для MSSQL.. Лучший ответ: Вы можете использовать 2 оператора (INSERT +

Вопрос:

Нужно вставить строку, если она не существует, и обновить, если она существует. Я нашел это решение для MySQL:

INSERT INTO table (id, name, age) VALUES(1, «A», 19) ON DUPLICATE KEY UPDATE

имя = “А”, возраст = 19

Но я не могу найти подобное для MSSQL..

Лучший ответ:

Вы можете использовать 2 оператора (INSERT + UPDATE) в следующем порядке. Обновление не обновит ничего, если оно не существует, вставка не будет вставлено, если оно существует:

UPDATE T SET name = ‘A’, age = 19 FROM [table] AS T WHERE T.id = 1 INSERT INTO [table] ( id, name, age) SELECT id = 1, name = ‘A’, age = 19 WHERE NOT EXISTS (SELECT ‘not yet loaded’ FROM [table] AS T WHERE T.id = 1)

Или MERGE:

;WITH ValuesToMerge AS ( SELECT id = 1, name = ‘A’, age = 19 ) MERGE INTO [table] AS T USING ValuesToMerge AS V ON (T.id = V.id) WHEN NOT MATCHED BY TARGET THEN INSERT ( id, name, age) VALUES ( V.id, V.name, V.age) WHEN MATCHED THEN UPDATE SET name = V.name, age = V.name;

Оцените статью
Добавить комментарий