Wie mache ich 3 Tabelle JOIN in UPDATE-Abfrage?


466

Ich stellte eine Frage und bekam diese Antwort, die half.

   UPDATE TABLE_A a JOIN TABLE_B b 
   ON a.join_col = b.join_col AND a.column_a = b.column_b 
   SET a.column_c = a.column_c + 1

Jetzt versuche ich dies zu tun, wenn es sich um 3 Tabellen handelt.

    UPDATE tableC c JOIN tableB b JOIN tableA a

Meine Frage ist im Grunde ... ist es möglich, 3 Table Join für eine UPDATEAnweisung durchzuführen? und was ist die richtige Syntax dafür? Vielen Dank. Mache ich das ...

 JOIN tableB, tableA
 JOIN tableB JOIN tableA

2
Sicher ist es möglich. Versuche es. Die Syntax ist genau so, wie Sie sie haben - Sie müssen nur die nächste JOINund ihre ONBedingung hinzufügen , genau wie in einer SELECTAbfrage.
— Michael Berkowski

2
UPDATE t1 JOIN t2 ON t1.id = t2.t1_id JOIN t3 ON t3.id = t2.t3_id SET t1.col = 'newval'
— Michael Berkowski

1
Die erwähnte Frage ist hier: stackoverflow.com/questions/15206746/…
— Urs

Antworten:


810

Die Antwort ist, dass yesSie können

versuche es so

UPDATE TABLE_A a 
    JOIN TABLE_B b ON a.join_col = b.join_col AND a.column_a = b.column_b 
    JOIN TABLE_C c ON [condition]
SET a.column_c = a.column_c + 1

BEARBEITEN:

Für allgemeine Update-Join:

   UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
   SET a.columnToUpdate = [something]

2
Seltsam ist jedoch, dass meine HeidiSQL-Software keine betroffenen Zeilen meldet, obwohl die Daten zeigen, dass die Aktualisierungen durchgeführt wurden.
— Pianoman

1
@ Pianoman Für mich ist es auch passiert und es hat etwas mit ON UPDATE CURRENT_TIMESTAMP zu tun. Ich habe das Update nur manuell hinzugefügt und es behoben. Ich habe nur gesagt, ob es jemand anderem passiert
— eric.itzhak

Wenn Sie eine visuelle Hilfe benötigen, um Ihre Joins korrekt zu machen: browse-tutorials.com/tutorial/mysql-joins-visual-representation
— ram4nd

Ich denke, das Folgende ist ein besserer allgemeiner Plan: UPDATE table A JOIN table B ON {join data} JOIN table C ON {join data} JOIN {more join tables} SET A.column = {expression}(verzeihen Sie mir, wenn dieser verdammte Editor mich nicht in Zeilenumbrüche eintragen lässt, ohne einen vollständigen Beitrag zu
— verfassen

Wo ist WHERE?? Oder WHEREist das nicht möglich?
— Grün
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.