Ik denk dat je er voor 99% bij was:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Voeg de && A > 1
toe naar de tweede IF-verklaring en aan uw derde voorwaarde is voldaan.
Bewerken:
Per @Andre's opmerking op de vraag en de suggestie dat de geneste IF
is moeilijk te lezen, je zou dit ook kunnen doen als een paar vragen die geen onnodig werk doen en leesbaar zijn:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Als A NULL is, voldoet het aan geen van beide voorwaarden en is het dus niet nodig om op te geven dat A niet NULL is.
Vervolgens is de derde voorwaarde niet nodig, zoals @Andre suggereerde. Als A tussen 1 en 20 ligt, blijft het zoals het is.
Ten slotte lijkt het ongebruikelijk om A in te stellen op 0 waarbij A kleiner dan of gelijk aan 1 is. Waarden van 1 worden gewijzigd in 0. Als u van plan bent om waarden kleiner dan 1 (inclusief negatieve waarden) eenvoudig in te stellen op 0, moet u <
omwisselen voor <=
.