UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Det borde göra det, och det gör verkligen precis vad du gör. Jag föredrar dock 'JOIN'-syntax för joins snarare än flera 'WHERE'-villkor, jag tror att det är lättare att läsa
När det gäller att springa långsamt, hur stora är borden? Du bör ha index på tobeupdated.value
och original.value
EDIT:vi kan också förenkla frågan
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
är en stenografi när båda tabellerna i en join har en identiskt namngiven key
som id
. dvs en equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join