Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualize uma tabela MySQL com valores de outra

UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id

Isso deve fazê-lo, e realmente está fazendo exatamente o que o seu é. No entanto, prefiro a sintaxe 'JOIN' para junções em vez de várias condições 'WHERE', acho que é mais fácil de ler

Quanto à execução lenta, quão grandes são as tabelas? Você deve ter índices em tobeupdated.value e original.value

EDIT:também podemos simplificar a consulta
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id

USING é uma abreviação quando ambas as tabelas de uma junção têm um nome idêntico de key como id . ou seja, um equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join