Hice una pregunta y obtuve esta respuesta que ayudó.
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
Ahora estoy buscando hacer esto si hay 3 tablas involucradas en algo como esto.
UPDATE tableC c JOIN tableB b JOIN tableA a
mi pregunta es básicamente ... ¿es posible hacer 3 table join en una UPDATE
declaración? y cuál es la sintaxis correcta para ello? Gracias. ¿Hago el ...
JOIN tableB, tableA
JOIN tableB JOIN tableA
JOIN
y suON
condición, igual que lo haría en unaSELECT
consulta.UPDATE t1 JOIN t2 ON t1.id = t2.t1_id JOIN t3 ON t3.id = t2.t3_id SET t1.col = 'newval'
Respuestas:
la respuesta es
yes
que puedespruébalo así
EDITAR:
Para la actualización general, únete:
fuente
UPDATE table A JOIN table B ON {join data} JOIN table C ON {join data} JOIN {more join tables} SET A.column = {expression}
(perdóneme si este maldito editor no me permite ingresar a nuevas líneas sin hacer una publicación completa)WHERE
?? OWHERE
no es posible?Una forma alternativa de lograr el mismo resultado es no usar
JOIN
palabras clave en absoluto.fuente
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 misma manera que haceSELECT * FROM TABLE_A, TABLE_B ...
lo haceUPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
adelante, el manual establece: "Latable_references
cláusula enumera las tablas involucradas en la unión. Su sintaxis se describe en la Sección 13.2.9.2, Sintaxis de UNIÓN ".A continuación se muestra la consulta de actualización que incluye
JOIN
yWHERE
ambos. Del mismo modo que podemos usar la cláusula de unión múltiple / dónde, espero que te ayude: -fuente
Un plan general alternativo, que solo estoy agregando como una respuesta independiente porque el "comentario sobre una respuesta" no tomará nuevas líneas sin publicar la edición completa, aunque aún no esté terminado.
Ejemplo:
fuente
Para el ejemplo de PostgreSQL:
fuente