Câu lệnh MERGE dùng để làm gì?
Câu lệnh MERGE trong SQL được dùng để kết hợp thao tác INSERT, UPDATE và DELETE trong cùng một câu lệnh duy nhất, thường được gọi là "upsert" (update hoặc insert).
Mục đích của MERGE#
Đồng bộ dữ liệu giữa hai bảng (thường là bảng đích và bảng nguồn).
Nếu dữ liệu đã tồn tại (theo điều kiện JOIN), thì cập nhật dữ liệu đó.
Nếu dữ liệu chưa tồn tại, thì thêm mới bản ghi vào bảng đích.
Ngoài ra, có thể xóa những bản ghi không còn tồn tại trong bảng nguồn nếu cần.
Cấu trúc câu lệnh MERGE#
MERGE INTO target_table AS T USING source_table AS S ON T.key = S.key WHEN MATCHED THEN UPDATE SET T.col1 = S.col1, T.col2 = S.col2 WHEN NOT MATCHED THEN INSERT (col1, col2) VALUES (S.col1, S.col2);
Ví dụ minh họa#
Giả sử bạn có bảng employees (bảng đích) và bảng new_employees (bảng nguồn) với dữ liệu cập nhật:
MERGE INTO employees AS e USING new_employees AS n ON e.employee_id = n.employee_id WHEN MATCHED THEN UPDATE SET e.salary = n.salary WHEN NOT MATCHED THEN INSERT (employee_id, name, salary) VALUES (n.employee_id, n.name, n.salary);
Nếu
employee_idđã tồn tại trongemployees, cập nhật lạisalary.Nếu chưa tồn tại, thêm nhân viên mới vào bảng
employees.
Tóm lại#
MERGE giúp bạn thực hiện đồng thời cập nhật và chèn dữ liệu, tiết kiệm thao tác và tối ưu hiệu suất.
Rất hữu ích trong các tình huống đồng bộ dữ liệu, ETL, cập nhật báo cáo.