Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten aus mehreren Tabellen während einer SQL Server-INSERT-Operation mit MERGE erfassen?

Wie kann ich Daten aus mehreren Tabellen während einer SQL Server-INSERT-Operation mit MERGE erfassen?

Patricia Arquette
Freigeben: 2025-01-03 19:08:40
Original
918 Leute haben es durchsucht

How Can I Capture Data from Multiple Tables During an SQL Server INSERT Operation Using MERGE?

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);
Nach dem Login kopieren

In dieser MERGE-Anweisung:

  • Die USING-Klausel definiert die Quelldaten aus der SELECT-Abfrage.
  • Die ON-Klausel gibt an, dass die MERGE-Operation immer eine NOT MATCHED-Bedingung sein wird (d. h. nie aktualisieren oder löschen).
  • Die WHEN NOT MATCHED-Klausel definiert die INSERT-Operation, die die Daten aus der Quelltabelle in Tabelle3 einfügt.
  • Die OUTPUT-Klausel erfasst die Inserted.ID aus der Zieltabelle ( Table3) und Table2.ID aus der Quelltabelle (s.col6) und speichert sie in der Tabellenvariablen @MyTableVar.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage