Einfügen in... Zusammenführen... Auswählen in SQL Server
In SQL Server ermöglicht die INSERT INTO...SELECT-Anweisung Sie können Daten aus einer SELECT-Abfrage in eine Zieltabelle einfügen. Wenn die SELECT-Abfrage jedoch Daten aus mehreren Tabellen umfasst, kann die OUTPUT-Klausel keine Daten über verschiedene Tabellen hinweg erfassen.
Einführung von MERGE
Um dieses Problem zu lösen, sollten Sie die Verwendung von in Betracht ziehen MERGE-Anweisung. MERGE kombiniert INSERT-, UPDATE- und DELETE-Operationen in einer einzigen Anweisung. Es ermöglicht Ihnen, Aktionen für Zielzeilen basierend auf bestimmten Kriterien bedingt auszuführen.
Verwenden von MERGE für Ausgabedaten
Um Daten sowohl aus eingefügten als auch aus Quelltabellen zu erfassen, können Sie dies tun Verwenden Sie die OUTPUT-Klausel innerhalb einer MERGE-Anweisung. Das folgende Beispiel zeigt, wie man Daten aus mehreren Tabellen einfügt und die Inserted.ID und Table2.ID ausgibt:
MERGE INTO Table3 USING ( SELECT null AS col2, 110 AS col3, Table1.ID AS col4, Table2.Column2 AS col5, Table2.ID AS col6 FROM Table1 JOIN Table1Table2Link ON Table1.ID = Table1Table2Link.Column1 JOIN Table2 ON Table1Table2Link.Column2 = Table2.ID ) AS s ON 1 = 0 -- Always not matched WHEN NOT MATCHED THEN INSERT (Column2, Column3, Column4, Column5) VALUES (s.col2, s.col3, s.col4, s.col5) OUTPUT Inserted.ID, s.col6 INTO @MyTableVar (insertedId, Table2Id);
In dieser MERGE-Anweisung:
Das obige ist der detaillierte Inhalt vonWie kann ich Daten aus mehreren Tabellen während einer SQL Server-INSERT-Operation mit MERGE erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!