Chandrashekar
4/27/2017 - 1:33 PM

MERGE in sql

MERGE in sql

--CREATE TABLE SRC (Id int,Name nvarchar(255), IsActive bit)
--CREATE TABLE TRG (Id int,Name nvarchar(255), IsActive bit)
--INSERT INTO dbo.SRC(Id,Name,IsActive)VALUES(1,'AAA',1)
--INSERT INTO dbo.SRC(Id,Name,IsActive)VALUES(2,'BBB',1)
--INSERT INTO dbo.SRC(Id,Name,IsActive)VALUES(3,'CCC',1)
--INSERT INTO dbo.SRC(Id,Name,IsActive)VALUES(4,'DDD',1)
	;

MERGE dbo.TRG t
USING dbo.SRC s
	ON t.Id = s.Id
WHEN MATCHED
	THEN
		UPDATE
		SET t.NAME = s.NAME
			,t.IsActive = s.IsActive
WHEN NOT MATCHED BY TARGET
	THEN
		INSERT (
			Id
			,NAME
			,IsActive
			)
		VALUES (
			s.Id
			,s.NAME
			,s.IsActive
			)
WHEN NOT MATCHED BY SOURCE
	THEN
		DELETE;

SELECT *
FROM SRC

SELECT *
FROM TRG