Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да изтрия от източника с помощта на команда MERGE в SQL Server 2008?

Можете да използвате изходната клауза, за да прихванете модифицираните/вмъкнати редове в променлива на таблица и да я използвате с оператор за изтриване след сливането.

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. Как да свържа тези двете заедно? Varchar guid и guid тип и двата първични ключа

  2. Задействащ спусък за обемна вложка

  3. Как да шифровате всички съществуващи съхранени процедури на база данни

  4. Промени в лицензирането на Common Sense за SQL Server 2014 Standard Edition

  5. Кой е най-ефективният начин за нормализиране на текст от колона в таблица?