it-swarm.com.de

Wie mache ich 3 Tabellen JOIN in UPDATE-Abfrage?

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 suche ich dies zu tun, wenn es 3 Tabellen so etwas beteiligt sind.

    UPDATE tableC c JOIN tableB b JOIN tableA a

meine frage ist im grunde ... ist es möglich, 3 tabellen mit einer UPDATE anweisung zu verbinden? und was ist die richtige syntax dafür? Danke. Mache ich das ...

 JOIN tableB, tableA
 JOIN tableB JOIN tableA
445
Ricky

die Antwort ist yes Sie können

versuch es mal 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 beitreten:

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

Eine alternative Möglichkeit für dasselbe Ergebnis zu erzielen besteht darin, das Schlüsselwort JOIN überhaupt nicht zu verwenden.

UPDATE TABLE_A, TABLE_B
SET TABLE_A.column_c = TABLE_B.column_c + 1
WHERE TABLE_A.join_col = TABLE_B.join_col
40

Unten ist die Aktualisierungsabfrage, die JOIN & WHERE beides enthält. Genauso wie wir mehrere join/where-Klauseln verwenden können, hoffe es wird dir helfen:

UPDATE opportunities_cstm oc JOIN opportunities o ON oc.id_c = o.id
 SET oc.forecast_stage_c = 'APX'
 WHERE o.deleted = 0
   AND o.sales_stage IN('ABC','PQR','XYZ')
7
Nitin Shukla

Ein alternativer allgemeiner Plan, den ich nur als eigenständige Antwort hinzufüge, da der gesprengte "Kommentar zu einer Antwort" keine Zeilenumbrüche ohne Veröffentlichung der gesamten Bearbeitung zulässt, obwohl die Bearbeitung noch nicht abgeschlossen ist.

UPDATE table A
JOIN table B ON {join fields}
JOIN table C ON {join fields}
JOIN {as many tables as you need}
SET A.column = {expression}

Beispiel:

UPDATE person P
JOIN address A ON P.home_address_id = A.id
JOIN city C ON A.city_id = C.id
SET P.home_Zip = C.zipcode;
2
UncaAlby

Für ein PostgreSQL-Beispiel:

UPDATE TableA AS a
SET param_from_table_a=FALSE -- param FROM TableA
FROM TableB AS b
WHERE b.id=a.param_id AND a.amount <> 0; 
0
Oleg Potemkin