SQL обновляет один столбец из другого столбца в другой таблице
Я читал разные сообщения до этого. но никто из них, похоже, не работал у меня.
Как видно из названия, я пытаюсь обновить один столбец из столбца в другой таблице. Я не помню, чтобы с этим были проблемы раньше.
1. Таблица: user_settings.contact_id, я хочу обновить с помощью contacts.id where (user_settings.account_id == contacts_account_id)
2. Ранее контакты были связаны с учетными записями пользователей через account_id. Однако теперь мы хотим связать контакт с user_settings
с помощью contacts.id
Ниже приведены несколько примеров того, что я пробовал, хотя никто из них не работал. Меня будет интересовать А.) Почему они не работают и Б.) Что мне делать вместо этого.
Пример A:
UPDATE user_settings
SET user_settings.contact_id = contacts.id
FROM user_settings
INNER JOIN contacts ON user_settings.account_id = contacts.account_id
Пример B:
UPDATE (SELECT A.contact_id id1, B.id id2
FROM user_settings A, contacts B
WHERE user_settings.account_id = contacts.account_id)
SET id1 = id2
Пример C:
UPDATE user_settings
SET user_settings.contact_id = (SELECT id
FROM contacts
WHERE (user_settings.account_id = contacts.account_id)
WHERE EXISTS ( user_settings.account_id = contacts.account_id )
Мне кажется, что мой мозг просто выключился на меня и был бы признателен за любые удары, чтобы перезагрузить его. Спасибо:)
Ответы
Ответ 1
Согласно документации MySQL, чтобы выполнить кросс-табличное обновление, вы не можете использовать соединение (например, в других базах данных), но вместо этого используйте предложение where:
http://dev.mysql.com/doc/refman/5.0/en/update.html
Я думаю, что что-то вроде этого должно работать:
UPDATE User_Settings, Contacts
SET User_Settings.Contact_ID = Contacts.ID
WHERE User_Settings.Account_ID = Contacts.Account_ID
Ответ 2
Update tabelName Set SanctionLoad=SanctionLoad Where ConnectionId=ConnectionID
go
update tabelName Set meterreading=meterreading where connectionid=connectionid
go
update tabelName set customername=setcustomername where customerid=customerid