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)
Version imprimable
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)
C'est possible ;)
Bonjour,
pour SQL Server je dis oui et cela devrait donner quelque chose comme cela :
après pour un autre SGBD ...Code:
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 ?Citation:
Envoyé par brice01
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
OUCode:update table set champ1=champ1+delta where idtable in (select id from table1)
Il faut autant de champs chaque côté du IN.Code: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)Citation:
Envoyé par TheRussian
La syntaxe proposée par TheRussian est propre à SQL server et ne fonctionnera pas sous MySql.Citation:
Envoyé par brice01
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.Citation:
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:
1
2
3
4
5 update table t set champ1= ( select t.champ1+t1.delta from table1 t1 where t.idtable = t1.id)