SQL как задать условия (if else / наподобие) для выполнения той или иной инструкции
table
| id_column | name |
|---|---|
| 114 | строка1 |
| 115 | строка2 |
if id_column is null
then sql_query_1 # условно будет запрос на создание записи в таблице
else
sql_query_2 # условно будет запрос на удаление записи в таблице
from table
Возможно ли сделать такую/похожую конструкцию ?
Ответы (1 шт):
Автор решения: Andrew Nikolaev
→ Ссылка
На MS SQL это делается при помощи конструкции MERGE.
DECLARE @OldDataTable TABLE (ID INT)
DECLARE @NewDataTable TABLE (ID INT)
INSERT INTO @OldDataTable (ID) VALUES (1), (2), (3), (4), (5)
INSERT INTO @NewDataTable (ID) VALUES (3), (4), (5), (6), (7)
-- Задачу поставим так: удалить из @OldDataTable, что попадётся в @NewDataTable
-- и добавить всё незатронутое из @NewDataTable
MERGE @OldDataTable AS TargetTable
USING @NewDataTable AS SourceTable
ON (TargetTable.ID = SourceTable.ID)
WHEN MATCHED THEN
DELETE
WHEN NOT MATCHED THEN
INSERT (ID) VALUES (SourceTable.ID);
SELECT * FROM @OldDataTable