Обновление одной таблицы MySQL со значениями из другой
Я пытаюсь обновить одну таблицу MySQL на основе информации от другого.
мой original
таблица выглядит следующим образом:
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
и tobeupdated
таблица выглядит следующим образом:
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
Я хочу обновить id
на tobeupdated
С id
С original
на основе value
(строки, хранящиеся в
2 ответа:
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
. т. е. эквисоединение - http://en.wikipedia.org/wiki/Join_(в SQL) эквисоединение#