Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich mehrere MySQL-Tabellen mit einem LEFT JOIN?

Wie aktualisiere ich mehrere MySQL-Tabellen mit einem LEFT JOIN?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 13:33:26939Durchsuche

How to Update Multiple MySQL Tables Using a 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!

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