Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mettre à jour une table MySQL avec les valeurs d'une autre

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