UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Това трябва да го направи и наистина прави точно това, което е твоето. Предпочитам обаче синтаксисът „JOIN“ за присъединяване, отколкото множество условия „WHERE“, мисля, че е по-лесно за четене
Колкото до бавното движение, колко големи са масите? Трябва да имате индекси на tobeupdated.value
и original.value
РЕДАКТИРАНЕ:можем също да опростим заявката
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
е съкратено, когато и двете таблици на съединение имат идентично име key
като id
. т.е. equi-join - http://en.wikipedia.org/ wiki/Join_(SQL)#Equi-join