Что такое MERGE в SQL
Python
Middle
Без компании
Что такое MERGE в SQL
Ответы
`MERGE` в SQL — это операция, объединяющая `INSERT`, `UPDATE` и `DELETE` в одном запросе. Она позволяет синхронизировать данные между таблицами, выполняя действия в зависимости от условий совпадения.
**Синтаксис:**
```
MERGE INTO target_table AS target
USING source_table AS source
ON target.key = source.key
WHEN MATCHED THEN
UPDATE SET target.column = source.column
WHEN NOT MATCHED THEN
INSERT (key, column) VALUES (source.key, source.column)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
```
**Пример:**
Обновляем цены товаров из временной таблицы `new_prices`:
```
MERGE INTO products AS p
USING new_prices AS np
ON p.id = np.id
WHEN MATCHED THEN
UPDATE SET p.price = np.price
WHEN NOT MATCHED THEN
INSERT (id, price) VALUES (np.id, np.price);
```
**Плюсы:**
- Эффективность (одна операция вместо нескольких).
- Атомарность (все действия выполняются в одной транзакции).
Поддерживается в PostgreSQL, Oracle, SQL Server, но не в MySQL (там используется `INSERT ... ON DUPLICATE KEY UPDATE`).