May be the missing brackets around the
ON
condition?
Try:
MERGE INTO MERGE1 AS M1
USING (SELECT *FROM MERGE2) AS M2 ON
(M1.ID=M2.ID
AND M1.NAME=M2.NAME
AND M1.SALARY=M2.SALARY
AND M1.ADDRESS = M2.ADDRESS)
WHEN MATCHED THEN
UPDATE
SET M1.ID=M2.ID,
M1.NAME=M2.NAME,
M1.ADDRESS=M2.ADDRESS,
M1.SALARY=M2.SALARY
WHEN NOT MATCHED THEN
INSERT
(ID,NAME,SALARY,ADDRESS)
VALUES (M2.ID,M2.NAME,M2.SALARY,M2.ADDRESS)
Refer:
MSDN: MERGE (Transact-SQL)[
^]