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 :
- update xxx
- set a1 = (case
- when a1='12' then 'r8'
- when a1= '22' then 'r7'
- else a1
- end)
- where a1 in ('12', '22')//on évite de tout traiter
|
Code :
- update xxx
- set a1 = (case a1
- when '12' then 'r8'
- when '22' then 'r7'
- else a1
- end)
- where a1 in ('12', '22')//on évite de tout traiter
|
Sous Oracle, une variation des syntaxes ci-dessus doit être possible avec 2-3 modifs, ou sinon tu peux faire
Code :
- update xxx
- set a1 = decode(a1, '12', 'r8', '22', 'r7', a1)
- where a1 in ('12', '22')//on évite de tout traiter
|
Quant à la performance :
Si tu ne traites que les cas nécessaires pour ton update, autant faire tout en 1, dirais-je, mais... à tester !
Message édité par deliriumtremens le 15-02-2012 à 06:58:40