SQL обновляет один столбец из другого столбца в другой таблице - PullRequest
19 голосов
/ 29 сентября 2010

Я читал различные посты до этого.но никто из них, казалось, не работал для меня.

Как видно из заголовка, я пытаюсь обновить один столбец из столбца в другой таблице.Я не помню, чтобы у меня были проблемы с этим раньше ..

1. Таблица: user_settings.contact_id, я хочу обновить с contact.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 )

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

Ответы [ 2 ]

38 голосов
/ 29 сентября 2010

Согласно документации 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
0 голосов
/ 02 июня 2013
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...