如何做更新查询中的3表JOIN?

我问了一个问题,得到了这个答复,帮助。

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 

现在我正在寻找这样做,如果有3桌涉及这样的事情。

  UPDATE tableC c JOIN tableB b JOIN tableA a 

我的问题是基本上…这是可能做一个UPDATE语句3表连接? 和它是什么正确的语法? 谢谢。 我要做…

  JOIN tableB, tableA JOIN tableB JOIN tableA 

答案是yes你可以

试试这样

 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 

编辑:

对于一般更新join:

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

实现相同结果的另一种方法是根本不使用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 

下面是包含JOINWHERE的Update查询。 同样的方法,我们可以使用多个join/ where子句,希望它会帮助你: –

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

一个替代的一般计划,我只是作为一个独立的答案添加,因为抨击“回答评论”将不会采取新行,没有发布整个编辑,即使它尚未完成。

 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} 

例:

 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;