sql >> Databasteknik >  >> RDS >> Sqlserver

Hur tar man bort från källan med kommandot MERGE i SQL Server 2008?

Du kan använda output-satsen för att fånga de modifierade/infogade raderna till en tabellvariabel och använda den med en delete-sats efter sammanslagningen.

DECLARE @T TABLE(EmployeeID INT);

MERGE Target1 AS T
USING Source1 AS S
ON (T.EmployeeID = S.EmployeeID) 
WHEN NOT MATCHED BY TARGET AND S.EmployeeName LIKE 'S%' 
    THEN INSERT(EmployeeID, EmployeeName) VALUES(S.EmployeeID, S.EmployeeName)
WHEN MATCHED 
    THEN UPDATE SET T.EmployeeName = S.EmployeeName
WHEN NOT MATCHED BY SOURCE AND T.EmployeeName LIKE 'S%'
    THEN DELETE  
OUTPUT S.EmployeeID INTO @T;

DELETE Source1
WHERE EmployeeID in (SELECT EmployeeID
                     FROM @T);


  1. Hur man lägger till modul till Wildfly med CLI

  2. Fråga för att hämta den senaste posten i en historiktabell i Laravel 5.2

  3. Lösenordshash returnerar falskt

  4. Mysql ändra UNSIGNED-attribut till specifik kolumn