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, estou procurando fazer isso se houver 3 tabelas envolvidas, algo como isto.
UPDATE tableC c JOIN tableB b JOIN tableA a
minha pergunta é basicamente ... é possível fazer 3 tabelas em uma UPDATE
declaração? e qual é a sintaxe correta para isso? Obrigado. Eu faço o ...
JOIN tableB, tableA
JOIN tableB JOIN tableA
JOIN
e suaON
condição, da mesma forma que faria em umaSELECT
consulta.UPDATE t1 JOIN t2 ON t1.id = t2.t1_id JOIN t3 ON t3.id = t2.t3_id SET t1.col = 'newval'
Respostas:
a resposta é que
yes
você podetente assim
EDITAR:
Para atualização geral, junte-se:
fonte
UPDATE table A JOIN table B ON {join data} JOIN table C ON {join data} JOIN {more join tables} SET A.column = {expression}
(perdoe-me se este editor Blasted não vai me deixar entrar novas linhas sem fazer um post completo)WHERE
?? OuWHERE
não é possível?Uma maneira alternativa de alcançar o mesmo resultado é não usar
JOIN
palavra-chave.fonte
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
da mesma forma fazendoSELECT * FROM TABLE_A, TABLE_B ...
fazUPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
Posteriormente, o manual declara: "Atable_references
cláusula lista as tabelas envolvidas na junção. Sua sintaxe é descrita na Seção 13.2.9.2, JOIN Syntax ."Abaixo está a consulta Atualização, que inclui
JOIN
&WHERE
ambos. Da mesma forma que podemos usar a cláusula join / where múltipla, espero que ajude você: -fonte
Um plano geral alternativo, que estou adicionando apenas como resposta independente, porque o "comentário sobre uma resposta" não levará novas linhas sem postar a edição inteira, mesmo que ainda não tenha terminado.
Exemplo:
fonte
Para o exemplo do PostgreSQL:
fonte