Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghapus dari sumber menggunakan perintah MERGE di SQL Server 2008?

Anda dapat menggunakan klausa keluaran untuk menangkap baris yang dimodifikasi/disisipkan ke variabel tabel dan menggunakannya dengan pernyataan hapus setelah penggabungan.

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. Bagaimana cara menggabungkan tabel dengan cara setiap record digabungkan dengan record sebelumnya?

  2. Kesalahan 'Opsi SET Salah' Saat Membangun Proyek Basis Data

  3. Mengapa CTE ini jauh lebih lambat daripada menggunakan tabel temp?

  4. MS SQL Server 2008 :Mendapatkan tanggal mulai dan tanggal akhir minggu hingga 8 minggu ke depan

  5. Bagaimana server menangani permintaan layanan web dari banyak klien