Como fazer 3 tabela JOIN na consulta UPDATE?

Eu fiz uma pergunta e recebi esta resposta que ajudou.

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 

Agora eu estou olhando para fazer isso se houver 3 tabelas envolvidas algo assim.

  UPDATE tableC c JOIN tableB b JOIN tableA a 

minha pergunta é basicamente … isso é possível fazer 3 junit de tabela em uma UPDATE ? e qual é a syntax correta para isso? Obrigado. Eu faço o …

  JOIN tableB, tableA JOIN tableB JOIN tableA 

   

a resposta é yes você pode

tente assim

 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 

EDITAR:

Para a junit geral da atualização:

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

A maneira alternativa de obter o mesmo resultado não é usar a palavra-chave 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 

Abaixo está a consulta Atualizar, que inclui JOIN e WHERE ambos. Da mesma forma, podemos usar a cláusula multiple join / where, Espero que isso ajude você a: –

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

Um Plano Geral alternativo, que estou adicionando apenas como uma Resposta independente, porque o “comentário sobre uma resposta” não terá novas linhas sem postar a edição inteira, mesmo que ainda não esteja concluído.

 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} 

Exemplo:

 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; 

Para o exemplo do 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;