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
→ Ссылка