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

Jak używać klauzuli OUTPUT programu SQL Server do aktualizacji

Wypróbuj coś takiego, nadal musisz korzystać z tabeli tymczasowej, ale nie jest tak źle czytać i wykonuje zadanie.

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. serwer sql wyświetla brakujące daty

  2. Znajdź najmniejszą nieużywaną liczbę w SQL Server

  3. dynamiczne tworzenie tabeli #temp, a następnie wstawianie danych

  4. Przestaw SQL Server a sprzężenie wielokrotne

  5. Błąd SQL:nieprawidłowa składnia w pobliżu słowa kluczowego „Użytkownik”