J'ai posé une question et obtenu cette réponse qui m'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 essentiellement ... est-il possible de faire 3 table join sur une UPDATE
déclaration? et quelle est la syntaxe correcte pour cela? Je vous remercie. Dois-je faire le ...
JOIN tableB, tableA
JOIN tableB JOIN tableA
JOIN
et saON
condition, comme vous le feriez dans uneSELECT
requête.UPDATE t1 JOIN t2 ON t1.id = t2.t1_id JOIN t3 ON t3.id = t2.t3_id SET t1.col = 'newval'
Réponses:
la réponse est que
yes
vous pouvezessayez comme ça
ÉDITER:
Pour une mise à jour générale, rejoignez:
la source
UPDATE table A JOIN table B ON {join data} JOIN table C ON {join data} JOIN {more join tables} SET A.column = {expression}
(pardonnez-moi si ce foutu éditeur ne me laisse pas entrer dans les nouvelles lignes sans faire un post complet)WHERE
?? OuWHERE
n'est-ce pas possible?Une autre façon d' obtenir le même résultat est de ne pas utiliser du tout de
JOIN
mots clés.la source
UPDATE TABLE_A, TABLE_B SET TABLE_A.column_c = TABLE_A.column_c +1 WHERE TABLE_A.join_col = TABLE_B.join_col
JOIN
de la même façon de faireSELECT * FROM TABLE_A, TABLE_B ...
neUPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
Plus tard, le manuel indique: "Latable_references
clause répertorie les tables impliquées dans la jointure. Sa syntaxe est décrite dans la section 13.2.9.2, Syntaxe JOIN ."Ci - dessous la requête de mise à jour qui comprend
JOIN
etWHERE
deux. De la même manière que nous pouvons utiliser la clause join / where multiple, j'espère que cela vous aidera: -la source
Un plan général alternatif, que j'ajoute uniquement en tant que réponse indépendante parce que le "commentaire sur une réponse" foudroyé ne prendra pas de nouvelles lignes sans publier l'intégralité du montage, même s'il n'est pas encore terminé.
Exemple:
la source
Pour l'exemple PostgreSQL:
la source