UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Das sollte es tun, und es tut wirklich genau das, was Ihres ist. Ich bevorzuge jedoch die 'JOIN'-Syntax für Joins gegenüber mehreren 'WHERE'-Bedingungen, ich denke, es ist einfacher zu lesen
Wie groß sind die Tische, um langsam zu laufen? Sie sollten Indizes auf tobeupdated.value
haben und original.value
BEARBEITEN:Wir können die Abfrage auch vereinfachen
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
ist eine Kurzform, wenn beide Tabellen eines Joins einen identisch benannten key
haben wie id
. dh ein Equi-Join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join