私はこれの前に様々な投稿を読みました。しかし、どれも私のために働くようには見えませんでした。
タイトルが示すように、別のテーブルの列から1つの列を更新しようとしています。これまで問題があったことを覚えていません。
1。 テーブル:user_settings.contact_id、contacts.idで更新したいwhere (user_settings.account_id == contacts_account_id)
2。 以前は、連絡先はaccount_idを介してユーザーアカウントにリンクされていました。ただし、今度はuser_settings
を介してcontacts.id
に連絡先をリンクします
以下は私が試したことのいくつかの例ですが、どれもうまくいきませんでした。 A.)なぜ機能しないのか、B。)代わりに何をすべきか、に興味があります。
例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 )
私の脳はちょうど私をシャットダウンしたように感じ、それを再起動するためのあらゆるバンプに感謝します。ありがとう:)
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
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