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 - https://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join