sql >> Base de Datos >  >> RDS >> Mysql

Actualice una tabla MySQL con valores de otra

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

Eso debería hacerlo, y realmente está haciendo exactamente lo que es tuyo. Sin embargo, prefiero la sintaxis 'JOIN' para uniones en lugar de múltiples condiciones 'WHERE', creo que es más fácil de leer

En cuanto a correr lento, ¿qué tamaño tienen las mesas? Debería tener índices en tobeupdated.value y original.value

EDITAR:también podemos simplificar la consulta

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

USING es abreviatura cuando ambas tablas de una unión tienen un nombre idéntico key como id . es decir, un equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join