UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
To powinno wystarczyć i naprawdę robi dokładnie to, czym jest twoje. Jednak wolę składnię „JOIN” dla złączeń niż wiele warunków „WHERE”, myślę, że jest łatwiejsza do odczytania
Jeśli chodzi o bieganie wolno, jak duże są stoły? Powinieneś mieć indeksy na tobeupdated.value i original.value
EDYCJA:możemy również uprościć zapytanie
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING jest skrótem, gdy obie tabele złączenia mają identyczny nazwany key takie jak id . tj. equi-join - https://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join