UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Cela devrait le faire, et vraiment c'est exactement ce que vous faites. Cependant, je préfère la syntaxe 'JOIN' pour les jointures plutôt que plusieurs conditions 'WHERE', je pense que c'est plus facile à lire
En ce qui concerne la lenteur, quelle est la taille des tables ? Vous devriez avoir des index sur tobeupdated.value
et original.value
EDIT :nous pouvons également simplifier la requête
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
est un raccourci lorsque les deux tables d'une jointure ont une key
nommée identique comme id
. c'est-à-dire une équi-jointure - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join