Команда MERGE в SQL: назначение и синтаксис

Команда MERGE в SQL используется для объединения данных из двух таблиц, обновляя существующие записи или вставляя новые, в зависимости от условий. Эта команда позволяет выполнять несколько операций (вставка, обновление, удаление) в одном запросе, что может значительно упростить и ускорить обработку данных.

Синтаксис команды MERGE

MERGE INTO target_table AS target
USING source_table AS source
ON target.key_column = source.key_column
WHEN MATCHED THEN
    -- Операция при совпадении
    UPDATE SET target.column1 = source.column1,
               target.column2 = source.column2
WHEN NOT MATCHED THEN
    -- Операция при отсутствии совпадения
    INSERT (column1, column2)
    VALUES (source.column1, source.column2);

Параметры

  • target_table: Таблица, в которую будут вноситься изменения (целевая таблица).

  • source_table: Таблица или подзапрос, предоставляющий новые данные (источник данных).

  • key_column: Столбец, по которому производится сопоставление данных между целевой и исходной таблицами.

Примеры использования

Обновление и вставка данных

MERGE INTO employees AS e
USING new_employees AS n
ON e.employee_id = n.employee_id
WHEN MATCHED THEN
    UPDATE SET e.name = n.name,
               e.salary = n.salary
WHEN NOT MATCHED THEN
    INSERT (employee_id, name, salary)
    VALUES (n.employee_id, n.name, n.salary);

Обновление, вставка и удаление данных

MERGE INTO inventory AS i
USING new_stock AS n
ON i.item_id = n.item_id
WHEN MATCHED AND n.quantity = 0 THEN
    DELETE
WHEN MATCHED THEN
    UPDATE SET i.quantity = n.quantity
WHEN NOT MATCHED THEN
    INSERT (item_id, quantity)
    VALUES (n.item_id, n.quantity);

Команда MERGE может быть поддержана не всеми SQL-серверами, поэтому рекомендуется проверять поддержку в документации вашей СУБД.

Last updated