[SQLSERVER] Sử dụng câu lệnh MERGE Statement
Bài viết hôm nay, mình sẽ hướng dẫn các bạn sử dụng câu lệnh MERGE trong sqlsever. Vậy lệnh MERGE trong sql dùng để làm gì? MERGE là lệnh dùng để sửa đổi (update/insert/delete) dữ liệu của 1 bảng dựa vào kết quà so sánh với 1 bảng nào đó. Câu ...
Bài viết hôm nay, mình sẽ hướng dẫn các bạn sử dụng câu lệnh MERGE trong sqlsever.
Vậy lệnh MERGE trong sql dùng để làm gì?
MERGE là lệnh dùng để sửa đổi (update/insert/delete) dữ liệu của 1 bảng dựa vào kết quà so sánh với 1 bảng nào đó. Câu lệnh sử dụng MERGE thường ngắn gọn và hiệu quả hơn các câu lệnh thông thường cho cùng 1 điều kiện.
Ví dụ: Nếu bạn có hai bảng dữ liệu bảng A và bảng B.
Công việc cần làm là copy dữ liệu từ bảng A sang bảng B, nếu bảng A có tồn tại dữ liệu của bảng B thì update, còn nếu chưa có thì sử dụng lệnh insert.
Cú pháp:
-- SQL MERGE Statement Syntax MERGE [Destination table] AS ds USING [Source Table] AS st -- Include the columns Name ON ds.[Common column] = st.[Common Column] -- It's not about matching, You have to add the expressions WHEN MATCHED THEN INSERT | DELETE | UPDATE WHEN NOT MATCHED THEN INSERT | DELETE | UPDATE
Dưới đây là ví dụ:
-- SQL Server Merge Statement example MERGE [Merge Table] AS mrg USING (SELECT * FROM [Employee Table]) AS emp ON mrg.Id = emp.Id WHEN MATCHED AND mrg.[YearlyIncome] <= 50000 THEN DELETE WHEN MATCHED AND mrg.[YearlyIncome] >= 80000 THEN UPDATE SET mrg.[YearlyIncome] = mrg.[YearlyIncome] + 35000 WHEN NOT MATCHED THEN INSERT ([FirstName] ,[LastName] ,[Education] ,[Occupation] ,[YearlyIncome] ,[Sales] ,[HireDate]) VALUES(emp.[FirstName] ,emp.[LastName] ,emp.[Education] ,emp.[Occupation] ,emp.[YearlyIncome] ,emp.[Sales] ,emp.[HireDate]); GO
Kết quả sau khi thực hiện:
HAVE FUN :)