Heim >Datenbank >MySQL-Tutorial >Wie kann die MERGE-Anweisung von SQL Server Daten einfügen und mehrere Spalten aus verschiedenen Tabellen ausgeben?

Wie kann die MERGE-Anweisung von SQL Server Daten einfügen und mehrere Spalten aus verschiedenen Tabellen ausgeben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 10:04:14934Durchsuche

How Can SQL Server's MERGE Statement Insert Data and Output Multiple Columns from Different Tables?

Einfügen und Ausgeben von Daten mit MERGE in SQL Server

In dieser Abfrage versuchen wir, Daten mithilfe einer SELECT-Anweisung in Tabelle3 einzufügen und zu erfassen sowohl die eingefügte ID als auch einen anderen Spaltenwert aus einer anderen Tabelle. Der erste Versuch, die OUTPUT-Klausel zu verwenden, scheiterte an tabellenübergreifenden Referenzen.

Um diese Einschränkung zu überwinden, nutzen wir die MERGE-Anweisung. Indem wir Tabelle3 mithilfe einer MERGE-Anweisung füllen, können wir Werte sowohl aus den eingefügten Daten als auch aus den Quelldaten in der Ausgabeklausel verwenden.

Hier ist die überarbeitete Abfrage:

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

  • Die MERGE-Anweisung füllt Tabelle3 mit Daten aus der Unterabfrage.
  • Die Die OUTPUT-Klausel gibt an, dass sowohl die eingefügte ID als auch Table2.ID in die temporäre Tabelle @MyTableVar ausgegeben werden sollen.
  • Die WHEN NOT MATCHED-Klausel stellt sicher, dass die Daten eingefügt werden, wenn sie nicht bereits in Tabelle3 vorhanden sind.

Durch die Verwendung von MERGE auf diese Weise können wir Daten einfügen und zusätzliche Informationen aus mehreren Tabellen, einschließlich der eingefügten ID, in einer einzigen Anweisung erfassen.

Das obige ist der detaillierte Inhalt vonWie kann die MERGE-Anweisung von SQL Server Daten einfügen und mehrere Spalten aus verschiedenen Tabellen ausgeben?. 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