par
Hubert Roksor » 05 juin 2007, 20:38
Il faut savoir que si exécuter plusieurs requêtes différentes à la fois peut dans certain cas faire économiser du temps, c'est en même temps plus difficile à débugger et finalement très peu rentable. Un peu comme retirer le siège passager de sa voiture pour gagner 0,1 km/h sur l'autoroute.
Ensuite, tes requêtes ne sont pas différentes car seule la clause WHERE change donc elles peuvent être fusionnées. Finalement, si tu ne switch qu'entre 1 et 0 le plus simple est d'utiliser le résultat d'une soustraction. Soit A et B les deux valeurs possibles, pour changer la valeur de la colonne on applique "(A+B) - <valeur actuelle>", donc "1 - pays_etat". Le truc avec IF() marcherait aussi, mais est moins portable.
Code : Tout sélectionner
UPDATE pays
SET pays_etat = 1 - pays_etat
WHERE pays_code IN ('AE', 'BA', 'FR')
Il faut savoir que si exécuter plusieurs requêtes différentes à la fois peut dans certain cas faire économiser du temps, c'est en même temps plus difficile à débugger et finalement très peu rentable. Un peu comme retirer le siège passager de sa voiture pour gagner 0,1 km/h sur l'autoroute.
Ensuite, tes requêtes ne sont pas différentes car seule la clause WHERE change donc elles peuvent être fusionnées. Finalement, si tu ne switch qu'entre 1 et 0 le plus simple est d'utiliser le résultat d'une soustraction. Soit A et B les deux valeurs possibles, pour changer la valeur de la colonne on applique "(A+B) - <valeur actuelle>", donc "1 - pays_etat". Le truc avec IF() marcherait aussi, mais est moins portable.
[code]UPDATE pays
SET pays_etat = 1 - pays_etat
WHERE pays_code IN ('AE', 'BA', 'FR')[/code]