update plusieurs condition - SQL/NoSQL - Programmation
Marsh Posté le 14-02-2012 à 22:46:54
ReplyMarsh Posté le 15-02-2012 à 06:46:12
Je ne serais pas aussi définitif.
Sous Sql server(2005+), Mysql(5+ ?), tu dois pouvoir faire une des 2 versions ci-dessous (else final utile selon les clauses du where)
Code :
|
Code :
|
Sous Oracle, une variation des syntaxes ci-dessus doit être possible avec 2-3 modifs, ou sinon tu peux faire
Code :
|
Quant à la performance :
Si tu ne traites que les cas nécessaires pour ton update, autant faire tout en 1, dirais-je, mais... à tester !
Marsh Posté le 15-02-2012 à 11:05:51
Si tu en as beaucoup tu peux aussi remplire une table avec les valeures AVANT et APRES, faire un JOIN sur la valeur avant et un SET = APRES.
Marsh Posté le 15-02-2012 à 17:39:17
Au lieu de faire des requêtes compliquées, franchement, prépare une requête avec bind variables et ensuite exécuter les différentes combinaison de valeur ne sera pas trop pénalisant hein...
Marsh Posté le 16-02-2012 à 11:33:28
@delirium : ta premiere syntaxe est ansi et reconnue par oracle, sans doutes aussi mysql et db2. Le probleme ne se pose pas trop au niveau perf, mais cela te permet surtout d'eviter d'ouvrir une transaction si tes MAJ doivent s'effectuer ensembles.
Il n'y a sinon aucun avantage a faire les MAJ en un requete complexe au lieu de 2 simples
Marsh Posté le 14-02-2012 à 17:47:09
salut,
j'essai de faire un update avec plusieurs condition en une seule fois
mais je ne sais pas comment m'y prendre.
Voila je dois updater la colonne a1 de la table A avec les valeurs suivantes :
a1= 12 je mets r8
a1= 22 je met r7
je peux le faire en deux fois :
update A set a1='r8' where a1=12;
update A set a1='r7' where a1=22;
Est-ce possible de le faire en une seule requête ?
est-ce plus optimal en seule requête que deux requête séparé ?
Merci