Heim >Datenbank >MySQL-Tutorial >Wie kann ich während einer INSERT-Operation Ausgabewerte aus mehreren Tabellen abrufen?

Wie kann ich während einer INSERT-Operation Ausgabewerte aus mehreren Tabellen abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-05 16:39:41533Durchsuche

How Can I Retrieve Output Values from Multiple Tables During an INSERT Operation?

Einfügen in... Zusammenführen... Wählen Sie: Ausgabewerte aus mehreren Tabellen nutzen

Angenommen, Sie müssen Daten in ein Ziel einfügen Tabelle und rufen Sie zusätzlich spezifische Informationen aus anderen Tabellen ab, die an der Einfügeoperation beteiligt sind. Während die OUTPUT-Klausel bequem Daten aus der eingefügten Tabelle erfasst, reicht sie nicht aus, wenn Werte aus mehreren Tabellen bezogen werden. In solchen Szenarien erweist sich die MERGE-Anweisung als wirksame Lösung.

Um dies zu erreichen, weichen Sie von einem einfachen INSERT...SELECT-Ansatz ab und verwenden Sie stattdessen eine MERGE-Anweisung. Durch diese Änderung können Sie Werte sowohl aus den eingefügten Daten als auch aus den Quelldaten innerhalb der OUTPUT-Klausel nutzen.

Hier ist ein anschauliches Beispiel:

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 eine temporäre Tabelle oder Tabellenvariable (@MyTableVar) wird verwendet, um sowohl Inserted.ID (die Identitätsspalte von Table3) als auch Table2.ID zu erfassen. Die nicht vorhandene Gleichheitsbedingung in der ON-Klausel (1 = 0) stellt sicher, dass alle eingehenden Zeilen immer für das Einfügen und den Datenabruf berücksichtigt werden.

Somit fügt die MERGE-Anweisung effektiv Daten in Tabelle3 ein und füllt gleichzeitig @MyTableVar mit den gewünschten Werten aus der eingefügten Tabelle und der Quelltabelle. Dadurch können Sie mit den eingefügten Daten in Verbindung mit zugehörigen Informationen aus anderen Tabellen arbeiten und so den Nutzen von Einfügevorgängen erheblich erweitern.

Das obige ist der detaillierte Inhalt vonWie kann ich während einer INSERT-Operation Ausgabewerte aus mehreren Tabellen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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