Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć ze źródła za pomocą polecenia MERGE w SQL Server 2008?

Możesz użyć klauzuli output, aby przechwycić zmodyfikowane/wstawione wiersze do zmiennej tabeli i użyć jej z instrukcją delete po scaleniu.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL CASE z porównaniem if w instrukcji SELECT

  2. Relacja klucza obcego ze złożonymi kluczami podstawowymi w SQL Server 2005

  3. Implementacja obsługi błędów i transakcji w SQL Server

  4. Jak zmodyfikować zmienną w SSIS?

  5. jak sprawdzić, ile wierszy zostanie dotkniętych przed uruchomieniem zapytania w serwerze microsoft sql 2008