UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
To by mělo stačit a opravdu to dělá přesně to, co vy. Dávám však přednost syntaxi 'JOIN' pro spojení spíše než vícenásobným podmínkám 'WHERE', myslím, že je to snazší číst
Co se týče pomalého běhu, jak velké jsou stoly? Měli byste mít indexy na tobeupdated.value
a original.value
EDIT:můžeme také zjednodušit dotaz
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
je zkratka, když obě tabulky spojení mají identický pojmenovaný key
například id
. tj. equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join