Mettre à jour une colonne depuis une autre colonne dans une autre table
j'ai lu les différents post du avant cette. mais aucun d'eux ne semblait fonctionner pour moi.
comme le titre l'indique, j'essaie de mettre à jour une colonne d'une colonne d'une autre table. Je ne me souviens pas avoir eu de problèmes avec ça avant..
1. Table: user_settings.contact_id, je veux mettre à jour avec contacts.id where (user_settings.account_id == contacts_account_id)
2. auparavant, les Contacts étaient liés aux comptes utilisateurs via account_id. Cependant, nous voulons maintenant relier un contact user_settings
par contacts.id
voici quelques exemples de ce que j'ai essayé, mais aucun n'a fonctionné. Je serais intéressé par A.) pourquoi ils ne fonctionnent pas et B.) Que devrais-je faire à la place.
Exemple:
UPDATE user_settings
SET user_settings.contact_id = contacts.id
FROM user_settings
INNER JOIN contacts ON user_settings.account_id = contacts.account_id
Exemple 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
Exemple 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 )
j'ai l'impression que mon cerveau vient de s'arrêter et j'apprécierais toutes les bosses pour le redémarrer. Merci :)
2 réponses
selon la documentation MySQL, pour faire une mise à jour de table croisée, vous ne pouvez pas utiliser une jointure (comme dans les autres bases de données), mais utilisez plutôt une clause where:
http://dev.mysql.com/doc/refman/5.0/en/update.html
je pense que quelque chose comme cela devrait fonctionner:
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