02/10/2018, 00:32

[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.

sqlserver merge

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:

lệnh merge trong sqlserver

HAVE FUN :)

Tags:
0