Reputation: 12328
I read various post's prior to this. but none of them seemed to work for me.
As the title suggests, I am trying to update one column from a column in another table. I don't recall having problems with this before..
1. Table: user_settings.contact_id, I want to update with contacts.id where (user_settings.account_id == contacts_account_id)
2. Previously Contacts were linked to user accounts via the account_id. However, now we want to link a contact to user_settings
via contacts.id
Below are a few examples of what I have tried, though none of them have worked. I would be interested in A.) Why they don't work and B.) What should I do instead.
Example 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
Example 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
Example 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 )
I feel like my brain just shutdown on me and would appreciate any bumps to reboot it. Thanks :)
Upvotes: 20
Views: 62087
Reputation: 9
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
Upvotes: -1
Reputation: 175583
According to MySQL documentation, to do a cross table update, you can't use a join (like in other databases), but instead use a where clause:
http://dev.mysql.com/doc/refman/5.0/en/update.html
I think something like this should work:
UPDATE User_Settings, Contacts
SET User_Settings.Contact_ID = Contacts.ID
WHERE User_Settings.Account_ID = Contacts.Account_ID
Upvotes: 39