494 Stimmen

Wie kann ich drei Tabellen-Joins in einer UPDATE-Abfrage machen?

Ich habe eine Frage gestellt und diese Antwort erhalten, die mir geholfen hat.

   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 drei Tabellen involviert sind, so etwas wie dies.

    UPDATE tableC c JOIN tableB b JOIN tableA a

Meine Frage ist im Grunde... ist es möglich, drei Tabellen in einem UPDATE-Statement zu verbinden? Und wie ist die korrekte Syntax dafür?

Mache ich folgendes?

 JOIN tableB, tableA
 JOIN tableB JOIN tableA

862voto

echo_Me Punkte 36495

Die Antwort ist ja, du kannst es.

Probieren Sie es so aus:

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 [Bedingung]
SET a.column_c = a.column_c + 1

Für ein allgemeines Update join:

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

48voto

Matas Vaitkevicius Punkte 53532

Ein alternativer Weg, um das gleiche Ergebnis zu erreichen, besteht darin, das JOIN-Schlüsselwort ü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

13voto

Nitin Shukla Punkte 131

Unten ist die Aktualisierungs -Abfrage, die sowohl JOIN als auch WHERE enthält. Auf die gleiche Weise können wir mehrere Join/Where-Klauseln verwenden:

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')

4voto

UncaAlby Punkte 4659

Ein alternativer Allgemeinplan:

UPDATE-Tabelle A
JOIN-Tabelle B ON {Anschlussfelder}
JOIN-Tabelle C ON {Anschlussfelder}
JOIN {so viele Tabellen wie nötig}
SET A.Spalte = {Ausdruck}

Beispiel:

UPDATE Person P
JOIN Adresse A ON P.home_address_id = A.id
JOIN Stadt C ON A.city_id = C.id
SET P.home_zip = C.zipcode;

4voto

vishwampandya Punkte 835

Ja, Sie können einen Dreifachverknüpfung für eine UPDATE-Anweisung durchführen. Hier ist ein Beispiel:

UPDATE customer_table c

  JOIN
      employee_table e
      ON c.city_id = e.city_id
  JOIN
      anyother_table a
      ON a.someID = e.someID

SET c.active = "Ja"
WHERE c.city = "New York";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X