Est il possible de faire un update à partir du resultat d'un select ?
Par exemple :
update table set champ1=champ1+delta where idtable in (select id, delta from table1)
Est il possible de faire un update à partir du resultat d'un select ?
Par exemple :
update table set champ1=champ1+delta where idtable in (select id, delta from table1)
Bonjour,
pour SQL Server je dis oui et cela devrait donner quelque chose comme cela :
après pour un autre SGBD ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 update table set champ1=champ1+t1.delta from table t inner join table1 t1 on t.idtable = t1.id
attention je souhaite que pour chaque ligne trouvée que le delta provienne du resultat du select !
As-tu essayé ? Ca donne quoi ?Envoyé par brice01
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Cela ne fonctionne pas avec un select sur plusieurs champs.
L'erreur renvoyé est : le resultat du select ne doit renvoyer qu'une seule colonne
OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part update table set champ1=champ1+delta where idtable in (select id from table1)
Il faut autant de champs chaque côté du IN.
Code : Sélectionner tout - Visualiser dans une fenêtre à part update table set champ1=champ1+delta where (idtable,delta) in (select id, delta from table1)
On ne compare pas un n-uplet avec un n-uplet+1.
J'ai une erreur de syntaxe a partir de 'from' (Mysql)Envoyé par TheRussian
La syntaxe proposée par TheRussian est propre à SQL server et ne fonctionnera pas sous MySql.Envoyé par brice01
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Il n'y a donc pas de solution pour Mysql ?
Demain j'essaye la solution de BiMouXeTTe.
Merci
Exact mais je ne connaissais pas le SGBD.Envoyé par Xo
Si la version de MySQL accepte les sous-requêtes, peut-être que ceci peut aller (Attention je n'est pas testé et je ne connais pas trop MySQL) :
Car si "delta" n'est présent que dans la table "table1" je ne pense pas que les solutions de BiMouXette fonctionnent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 update table t set champ1= ( select t.champ1+t1.delta from table1 t1 where t.idtable = t1.id)![]()
Partager