sql >> Database teknologi >  >> RDS >> Mysql

Opdater en MySQL-tabel med værdier fra en anden

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



  1. MYSQL OR vs IN ydeevne

  2. Sådan fungerer ABS() i MariaDB

  3. SQL Server Express Backup Database | Sådan planlægger du automatisering og fjernelse af SQL Express-sikkerhedskopi

  4. SQL-forespørgsel for at få aggregeret resultat i kommaseparatorer sammen med gruppe for kolonne i SQL Server