UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Det burde gøre det, og det gør i virkeligheden præcis, hvad din er. Jeg foretrækker dog 'JOIN'-syntaks for joins frem for flere 'WHERE'-betingelser, jeg tror, det er nemmere at læse
Med hensyn til at løbe langsomt, hvor store er bordene? Du bør have indekser på tobeupdated.value
og original.value
EDIT:vi kan også forenkle forespørgslen
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
er stenografi, når begge tabeller i en joinforbindelse har en identisk navngivet key
såsom id
. dvs. en equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join