MS SQL Merge: универсальный инструмент для объединения данных
MS SQL Merge - это оператор, который позволяет объединить данные из двух таблиц в одной операции. Он выполняет операции вставки, обновления и удаления в целевой таблице на основе данных и условий, определенных в таблице источнике.
Пример использования оператора Merge:
Представим, что у нас есть две таблицы: "Customer" и "Customer_old". Таблица "Customer_old" содержит старые данные клиентов, которые необходимо обновить в таблице "Customer".
1. Создадим таблицы и заполним их данными:
sql
CREATE TABLE Customer (
ID INT,
Name VARCHAR(50),
Age INT
);
INSERT INTO Customer (ID, Name, Age)
VALUES (1, 'John', 25),
(2, 'Alice', 30),
(3, 'Bob', 35);
CREATE TABLE Customer_old (
ID INT,
Name VARCHAR(50),
Age INT
);
INSERT INTO Customer_old (ID, Name, Age)
VALUES (1, 'John', 26),
(2, 'Alice', 30),
(4, 'Eve', 28);
2. Используем оператор Merge для обновления данных в таблице "Customer":
sql
MERGE Customer AS Target
USING Customer_old AS Source
ON (Target.ID = Source.ID)
WHEN MATCHED THEN
UPDATE SET Target.Name = Source.Name, Target.Age = Source.Age
WHEN NOT MATCHED BY TARGET THEN
INSERT (ID, Name, Age)
VALUES (Source.ID, Source.Name, Source.Age)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
В результате выполнения операции Merge, таблица "Customer" будет содержать обновленные данные: возраст клиента с ID 1 изменится с 25 на 26.
Таким образом, оператор Merge позволяет выполнять операции вставки, обновления и удаления в одном запросе, что делает его очень удобным инструментом для синхронизации данных между таблицами.