Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich mehrere MySQL-Tabellen mit einem LEFT JOIN?
Aktualisieren mehrerer Tabellen über LEFT JOIN in MySQL
Frage:
Wie können Sie aktualisieren? Felder in einer Tabelle mit einem LEFT JOIN über mehrere Tabellen hinweg? Stellen Sie sich ein Szenario vor, in dem Sie alle Zeilen im Ergebnissatz der folgenden LEFT JOIN-Abfrage aktualisieren möchten:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
Antwort:
MySQL ermöglicht Ihnen die Durchführung von UPDATE Anweisungen mit jedem in SELECT-Anweisungen unterstützten Join-Typ, einschließlich LEFT JOIN. Die richtige Syntax lautet wie folgt:
UPDATE t1 LEFT JOIN t2 ON t2.id = t1.id SET t1.col1 = newvalue WHERE t2.id IS NULL
Beachten Sie, dass Sie für eine bessere Leistung in einer SELECT-Anweisung die Verwendung der NOT IN / NOT EXISTS-Syntax in Betracht ziehen sollten:
SELECT t1.* FROM t1 WHERE t1.id NOT IN ( SELECT id FROM t2 )
Einzelheiten zur Leistung finden Sie unter Dieser Artikel: Unvollständige Bestellungen finden: Leistung von LEFT JOIN im Vergleich zu NOT IN.
MySQL unterstützt jedoch nicht die Verwendung der Zieltabelle in einer Unterabfrage innerhalb einer UPDATE-Anweisung. Daher müssen Sie sich bei Aktualisierungen mit mehreren Tabellen auf die weniger effiziente LEFT JOIN-Syntax verlassen.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich mehrere MySQL-Tabellen mit einem LEFT JOIN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!