Подтвердить что ты не робот

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 )

Мне кажется, что мой мозг просто выключился на меня и был бы признателен за любые удары, чтобы перезагрузить его. Спасибо:)

4b9b3361

Ответ 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