Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser If Then Else dans une requête de mise à jour MySQL ?

Je pense que vous y étiez à 99 % :

UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Ajouter le && A > 1 à la deuxième instruction IF et votre troisième condition est satisfaite.

Modifier :

Par le commentaire de @Andre à la question et la suggestion que le IF imbriqué est difficile à lire, vous pouvez également le faire en quelques requêtes qui ne font pas de travail inutile et qui sont lisibles :

UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Lorsque A est NULL, il ne remplira aucune de ces conditions, et élimine ainsi le besoin de spécifier que A n'est pas NULL.

Ensuite, il n'y a pas besoin de la troisième condition comme @Andre l'a suggéré. Si A est compris entre 1 et 20, il reste tel quel.

Enfin, fixer A à 0 où A est inférieur ou égal à 1 semble inhabituel. Les valeurs de 1 seront remplacées par 0. Si vous avez l'intention de simplement définir les valeurs inférieures à 1 (y compris les valeurs négatives) sur 0, vous devez échanger < pour <= .