sql >> Databasteknik >  >> RDS >> Mysql

Uppdatera en MySQL-tabell med värden från en annan

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



  1. Dynamisk SQL för att generera kolumnnamn?

  2. Hur man skapar en databas i MySQL

  3. SQL - Uppdatera flera poster i en fråga

  4. Få rad där datetime-kolumnen =idag - SQL-server noob