Aktualisieren von SQL -Server -Tabellen mit Daten aus SELECT -Anweisungen
SQL Server ermöglicht das Einfügen von Zeilen mit INSERT...SELECT
. Die direkte Aktualisierung einer Tabelle mit einer SELECT
-Anweisung in der Art und Weise, wie man zunächst versuchen könnte (z. B. UPDATE Table SET col1, col2 SELECT col1, col2...
), ist jedoch ungültig. Der korrekte Ansatz besteht darin, Unterabfragen oder Verbindungen zu verwenden.
Nehmen wir an, Sie müssen eine Tabelle mit Werten aus einer temporären Tabelle aktualisieren. Ein falscher Versuch könnte so aussehen:
UPDATE Table SET col1, col2 SELECT col1, col2 FROM other_table WHERE sql = 'cool' WHERE Table.id = other_table.id
richtige Methoden:
1. Unterabfrageansatz:
Diese Methode verwendet Unterabfragen, um die Aktualisierungswerte zu holen:
UPDATE Table SET col1 = (SELECT col1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id), col2 = (SELECT col2 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id) WHERE EXISTS (SELECT 1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)
Die EXISTS
-Klausel stellt sicher, dass Aktualisierungen nur für Zeilen mit passenden Einträgen in other_table
.
2. Join-basierter Ansatz:
Dieser Ansatz nutzt a für effizientere Aktualisierungen: JOIN
UPDATE Table_A SET Table_A.col1 = Table_B.col1, Table_A.col2 = Table_B.col2 FROM Some_Table AS Table_A INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id WHERE Table_A.col3 = 'cool'
entspricht Zeilen in JOIN
und Table_A
basierend auf der Spalte Table_B
, wobei nur Aktualisierungen angewendet werden, wobei id
gleich 'cool'.
Table_A.col3
Beide Unterabfragen und Joins bieten effektive Möglichkeiten zum Aktualisieren von SQL -Servertabellen mithilfe von Daten, die aus
Das obige ist der detaillierte Inhalt vonWie kann ich eine SQL Server-Tabelle mithilfe von Werten aus einer SELECT-Anweisung aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!