Actualización de MySql Una tabla unida

Quiero actualizar una tabla en una statement que tiene varias combinaciones. Aunque sé que el orden de las uniones realmente no importa (a menos que esté usando sugerencias de optimizador), las ordené de cierta manera para que sean más intuitivas de leer. Sin embargo, esto hace que la tabla que quiero actualizar no sea la que empiezo, y tengo problemas para actualizarla.

Un ejemplo ficticio de lo que me gustaría hacer es algo así como:

UPDATE b FROM tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10; 

Hay muchas publicaciones sobre cómo actualizar con combinaciones aquí, sin embargo, siempre tienen la tabla actualizada. Sé que esto es posible en SQL Server y espero que también sea posible en MySQL.

La syntax UPDATE multi-tabla en MySQL es diferente de Microsoft SQL Server. No necesita decir qué tabla (s) está (n) actualizando, eso está implícito en su cláusula SET.

 UPDATE tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10; 

No hay cláusula FROM en la syntax de MySQL.

ACTUALIZAR con JOIN no es SQL estándar, y tanto MySQL como Microsoft SQL Server han implementado sus propias ideas como una extensión a la syntax estándar.

Usted tiene el orden de las declaraciones mal. Puede leer la syntax aquí (lo sé, es bastante difícil de leer.

 UPDATE tableA a JOIN tableB b ON a.a_id = b.a_id JOIN tableC c ON b.b_id = c.b_id SET b.val = a.val+c.val WHERE a.val > 10 AND c.val > 10; 

sql violín

Este enlace debe darle la syntax que MySQL necesita y aquí hay un ejemplo. ¿Por qué necesitas unirte a las dos mesas? ¿es para limitar los registros actualizados? Lo estoy preguntando porque también puedes hacer algo como lo siguiente:

 update B set Bx= where B. is in( select Ay from A left outer join B on A.=B. )