Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiorna una tabella MySQL con i valori di un'altra

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

Dovrebbe farlo, e in realtà sta facendo esattamente quello che è il tuo. Tuttavia, preferisco la sintassi "JOIN" per i join piuttosto che più condizioni "WHERE", penso che sia più facile da leggere

Per quanto riguarda la corsa lenta, quanto sono grandi i tavoli? Dovresti avere indici su tobeupdated.value e original.value

EDIT:possiamo anche semplificare la query

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

USING è un'abbreviazione quando entrambe le tabelle di un join hanno una key identica come id . cioè un equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join