UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Dat zou het moeten doen, en het doet echt precies wat de jouwe is. Ik geef echter de voorkeur aan 'JOIN'-syntaxis voor joins in plaats van meerdere 'WHERE'-voorwaarden, ik denk dat het gemakkelijker te lezen is
Wat betreft langzaam werken, hoe groot zijn de tafels? Je zou indexen moeten hebben op tobeupdated.value
en original.value
EDIT:we kunnen de zoekopdracht ook vereenvoudigen
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
is een afkorting wanneer beide tabellen van een join een identieke naam hebben met de naam key
zoals id
. dat wil zeggen een equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join