Объединение данных в SQL с помощью оператора MERGE с примерами кода

В SQL оператор «MERGE» используется для объединения данных из двух разных таблиц в одну. Он позволяет вам выполнить операцию «upsert», что означает, что вы можете вставлять новые записи или обновлять существующие записи на основе определенных условий. Вот несколько способов использования оператора MERGE, а также примеры кода:

Метод 1: базовый оператор MERGE

MERGE INTO target_table AS T
USING source_table AS S
ON (T.id = S.id)
WHEN MATCHED THEN
    UPDATE SET T.column1 = S.column1,
               T.column2 = S.column2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2)
    VALUES (S.id, S.column1, S.column2);

Метод 2: использование подзапроса в инструкции MERGE

MERGE INTO target_table AS T
USING (
    SELECT id, column1, column2
    FROM source_table
    WHERE condition
) AS S
ON (T.id = S.id)
WHEN MATCHED THEN
    UPDATE SET T.column1 = S.column1,
               T.column2 = S.column2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2)
    VALUES (S.id, S.column1, S.column2);

Метод 3: использование оператора MERGE с DELETE

MERGE INTO target_table AS T
USING source_table AS S
ON (T.id = S.id)
WHEN MATCHED THEN
    UPDATE SET T.column1 = S.column1,
               T.column2 = S.column2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2)
    VALUES (S.id, S.column1, S.column2)
WHEN NOT MATCHED BY SOURCE THEN
    DELETE;

Метод 4: использование оператора MERGE с предложением OUTPUT

MERGE INTO target_table AS T
USING source_table AS S
ON (T.id = S.id)
WHEN MATCHED THEN
    UPDATE SET T.column1 = S.column1,
               T.column2 = S.column2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2)
    VALUES (S.id, S.column1, S.column2)
OUTPUT $action, inserted.*, deleted.*;

Это всего лишь несколько примеров использования инструкции MERGE в SQL. Точный метод, который вы выберете, будет зависеть от ваших конкретных требований и используемой системы базы данных.