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

Cara menggunakan klausa OUTPUT dari SQL Server untuk pembaruan

Coba Sesuatu seperti ini, Anda masih harus menggunakan tabel temp tetapi tidak terlalu buruk untuk dibaca dan menyelesaikan pekerjaan.

CREATE TABLE #tmp
(
    tmpID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
    xmlData VARCHAR(255),
    EntityId INT
)
DECLARE @t2 TABLE
(
    tmpID INT,
    EntityId INT
)

MERGE dbo.EntityMaster AS EM
USING
(
    SELECT tmpID,
        xmlData,
        EntityId
    FROM #tmp
) AS X
    ON EM.EntityId = X.EntityId
WHEN NOT MATCHED THEN
    INSERT (EntityType)
    VALUES (X.xmlData)
OUTPUT X.tmpID, INSERTED.EntityId
INTO @t2 (tmpID, EntityId);

UPDATE T
SET EntityId = T2.EntityId
FROM @t2 T2
INNER JOIN #tmp T
    ON T2.tmpID = T.tmpID



  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 menyalin database SQL Azure ke server pengembangan lokal saya?

  2. Bagaimana cara mengeksekusi file .sql menggunakan powershell?

  3. Meniru group_concat() dikombinasikan dengan GROUP BY

  4. varchar(max) tipe data pemetaan odbc ke ms-access2003

  5. MSSQL 2008:Dapatkan catatan terakhir yang diperbarui berdasarkan bidang tertentu