Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách sử dụng mệnh đề OUTPUT của SQL Server để cập nhật

Hãy thử một cái gì đó như thế này, bạn vẫn phải sử dụng bảng tạm thời nhưng nó không quá tệ để đọc và nó hoàn thành công việc.

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. Tính toán khoảng cách giữa hai điểm (Vĩ độ, Kinh độ)

  2. Làm cách nào để tôi có thể chèn danh tính theo cách thủ công?

  3. Truyền MSSQL ([varcharColumn] thành int) trong SELECT được thực thi trước khi mệnh đề WHERE lọc ra các giá trị không hợp lệ

  4. Biểu diễn khác nhau của UUID trong Java Hibernate và SQL Server

  5. Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng CONVERT ()