Gleichzeitiges Aktualisieren mehrerer Tabellen in MySQL
Bei Datenbankoperationen kann es notwendig werden, Werte in mehreren Tabellen gleichzeitig zu aktualisieren, möglicherweise mit unterschiedlichen Werten Granularitätsebenen oder zusätzliche Bedingungen. Ein häufiges Szenario besteht darin, dass mehrere Tabellen zu Denormalisierungszwecken dieselben Daten benötigen.
In solchen Fällen kann die Durchführung separater UPDATE-Abfragen für jede Tabelle ineffizient und redundant sein. In diesem Artikel geht es um die Frage, ob es möglich ist, mehrere UPDATE-Vorgänge in einer einzigen, einheitlichen Abfrage zu kombinieren.
Multi-Table-Updates
Die MySQL-Dokumentation bietet eine Lösung mit Multi-Table-Updates. Dieser Ansatz ermöglicht die Aktualisierung mehrerer Tabellen innerhalb derselben Abfrage, indem sie mithilfe einer gemeinsamen Spalte oder eines gemeinsamen Ausdrucks verbunden werden. Die Syntax für eine Aktualisierung mehrerer Tabellen lautet wie folgt:
UPDATE table1 INNER JOIN table2 ON (table1.column = table2.column) SET table1.column1 = ..., table1.column2 = ..., table2.column1 = ..., table2.column2 = ... WHERE ...
Beispiel
Bedenken Sie die in der Problemstellung gestellte Frage: zwei Tabellen mit einigen Unterschieden in den Spalten und ein Bedarf an denselben Updates. Mithilfe des Multi-Table-Update-Ansatzes können wir die beiden UPDATE-Abfragen zu einer kombinieren:
UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid) SET a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200, b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200 WHERE a.userid = 1 and a.lid = 1 AND b.userid = 1
In diesem Beispiel verfügt Table_One über eine zusätzliche Spalte (Deckel), die in Table_Two nicht vorhanden ist. Die Join-Bedingung stellt sicher, dass Aktualisierungen nur für die übereinstimmenden Zeilen durchgeführt werden.
Einschränkungen
Während Multitabellenaktualisierungen eine bequeme Möglichkeit bieten, mehrere Tabellen gleichzeitig zu aktualisieren, sie Es gibt einige Einschränkungen:
Alternative Lösungen
Abhängig von den spezifischen Anforderungen gibt es alternative Lösungen, die anstelle von Updates für mehrere Tische in Betracht gezogen werden sollten:
Das obige ist der detaillierte Inhalt vonKann MySQL mehrere Tabellen gleichzeitig in einer einzigen Abfrage aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!