У меня есть две таблицы, оба выглядят как
id name value
===================
1 Joe 22
2 Derk 30
Мне нужно скопировать значение value
из в tableA
на tableB
основе имени проверки в каждой таблице.
Любые советы для этого UPDATE
заявления?
mysql
sql
sql-update
LeoSam
источник
источник
INNER JOIN
идеально подходит в этой ситуации. Я также использовалCONCAT_WS
для слияния названияUPDATE participants_registrations INNER JOIN participants ON participants.id = participants_registrations.participantId INNER JOIN registrations ON registrations.id = participants_registrations.registrationId LEFT JOIN groups ON (groups.id = registrations.groupId) SET registrations.groupId = groups.id, registrations.groupName = groups.name, participants.memberOfGroupName = groups.name
вам нужно объединить две таблицы:
например, вы хотите скопировать значение
name
из таблицы A туда,tableB
где они имеют одинаковыеID
ОБНОВЛЕНИЕ 1
ОБНОВЛЕНИЕ 2
источник
where
предложение или изменить его вwhere
зависимости от ваших потребностей ..Вторая возможность
источник
.name
проиндексировано в обеих таблицах?Второй вариант возможен также, если вы используете безопасный режим обновлений (и вы получаете сообщение об ошибке, указывающее, что вы пытались обновить таблицу без WHERE, использующего столбец KEY), добавив:
источник
источник
Сохраните ваши данные во временной таблице
Теперь обновите столбец
источник
В моем случае принятое решение было слишком медленным. Для таблицы со 180К строк скорость обновления составляла около 10 строк в секунду. Это с индексами на элементах соединения.
Я наконец решил свою проблему, используя процедуру:
Я надеюсь, что это поможет кому-то в будущем, как это помогло мне
источник
Если у вас есть общее поле в обеих таблицах, тогда это так просто! ....
Таблица-1 = таблица, где вы хотите обновить. Таблица-2 = таблица, откуда вы берете данные.
источник