UPDATE mehrere Tabellen in MySQL mit LINKER JOIN
Ich habe zwei Tabellen und möchte aktualisieren von Feldern in T1 für alle Zeilen in einer LEFT JOIN.
Für ein einfaches Beispiel, aktualisieren Sie alle Zeilen des folgenden Ergebnis:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.id IS NULL
Den MySQL-Handbuch besagt, dass:
Multiple-table UPDATE-Anweisungen verwenden können, jede Art von join-erlaubt in SELECT-Anweisungen wie "LINKS" BEITRETEN.
Aber ich finde nicht die richtige syntax, dies zu tun, in der, dokumentiert mit mehreren Tabellen zu AKTUALISIEREN.
Was ist die richtige syntax?
InformationsquelleAutor der Frage Paul Oyster | 2009-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass für eine
SELECT
es wäre effizienter zu nutzenNOT IN
/NOT EXISTS
syntax:Siehe den Artikel in meinem blog für performance-details:
LEFT JOIN
im Vergleich zuNOT IN
Leider
MySQL
ist nicht zulässig mit der Ziel-Tabelle in einer Unterabfrage in einerUPDATE
Aussage, das ist, warum Sie benötigen, zu bleiben, um weniger effizienteLEFT JOIN
syntax.InformationsquelleAutor der Antwort Quassnoi
Das gleiche kann angewendet werden, um ein Szenario, wo die Daten normalisiert wurden, aber jetzt willst du eine Tabelle Werte in eine Dritte Tabelle. Im folgenden wird, können Sie aktualisieren Sie eine Tabelle mit Daten aus einer Dritten Tabelle, das ist mochte von einer zweiten Tabelle.
Dies wäre nützlich, in einem Fall, wo Sie Benutzer und Gruppen, und Sie wollte einen Benutzer hinzufügen zu können Ihre eigene variation von der name der Gruppe, so ursprünglich, würden Sie wollen, importieren Sie die vorhandenen Gruppennamen in das Feld, wo der Benutzer in der Lage sein, um es zu ändern.
InformationsquelleAutor der Antwort theprivileges
Werde ich aktualisieren Feld text in der Tabelle A mit
und kommen zu diesem Ergebnis:
denen nur ein Feld aus Tabelle B ist angenommen, aber ich komme zu diesem Ergebnis:
InformationsquelleAutor der Antwort DNS
InformationsquelleAutor der Antwort guest
InformationsquelleAutor der Antwort Shyam Sharma