ti-enxame.com

Sintaxe MySQL UPDATE com várias tabelas usando a cláusula WHERE

Caso:

Como atualizar table1 com dados de table2 onde id é igual?

Problema:

Quando executo a seguinte instrução de atualização, ela atualiza todos os registros em table1 (mesmo quando o campo id em table1 não existe em table2).

Como posso usar a sintaxe da tabela de atualização múltipla para atualizar SOMENTE os registros em table1 APENAS onde o id está presente em table2 e igual?

UPDATE table1,table2
SET table1.value=table2.value 
WHERE table2.id=table1.id

Desde já, obrigado.

14
Ben

aqui está a sintaxe correta de UPDATE com junção em MySQL

UPDATE  table1 a
        INNER JOIN table2 b
            ON a.ID = b.ID
SET     a.value = b.value 
26
John Woo

[~ # ~] edit [~ # ~] Para o MySql será

UPDATE table1 t1 INNER JOIN 
       table2 t2 ON t2.id = t1.id
   SET t1.value = t2.value 

sqlfiddle

A resposta original era para o SQL Server

UPDATE table1
   SET table1.value = table2.value 
  FROM table1 INNER JOIN 
       table2 ON table2.id=table1.id

sqlfiddle

4
peterm

Você pode tentar isso:

UPDATE TABLE1
SET column_name = TABLE2.column_name
FROM TABLE1, TABLE2
WHERE TABLE1.id = TABLE2.id
2
Lingasamy Sakthivel
UPDATE table1
SET table1.value = (select table2.value 
WHERE table2.id=table1.id)
0
jmontross