J'ai posé une question et obtenu cette réponse qui a aidé.
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
Maintenant, je cherche à faire cela s'il y a 3 tables impliquées quelque chose comme ça.
UPDATE tableC c JOIN tableB b JOIN tableA a
ma question est fondamentalement… est-ce possible de faire la table 3 se joignent sur une instruction UPDATE
? et quelle est la syntaxe correcte pour cela? Je vous remercie. Est-ce que je fais le ...
JOIN tableB, tableA
JOIN tableB JOIN tableA
la réponse est yes
vous pouvez
essayez comme ça
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
MODIFIER:
Pour rejoindre la mise à jour générale:
UPDATE TABLEA a
JOIN TABLEB b ON a.join_colA = b.join_colB
SET a.columnToUpdate = [something]
Une autre façon de obtenir le même résultat n’est pas du tout utiliser le mot clé JOIN
.
UPDATE TABLE_A, TABLE_B
SET TABLE_A.column_c = TABLE_B.column_c + 1
WHERE TABLE_A.join_col = TABLE_B.join_col
Ci-dessous se trouve la requête de mise à jour qui inclut JOIN
& WHERE
les deux. De la même manière, nous pouvons utiliser plusieurs clauses join/where, j'espère que cela vous aidera: -
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')
Un plan général alternatif, que je ne fais qu'ajouter en tant que réponse indépendante, car le "commentaire sur une réponse" ne prendra pas de nouvelles lignes sans publier l'intégralité de la modification, même si elle n'est pas encore terminée.
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}
Exemple:
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;
Pour exemple PostgreSQL:
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;