Мисля, че бяхте 99% там:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Добавете && A > 1
към втория оператор IF и третото ви условие е изпълнено.
Редактиране:
Според коментара на @Andre към въпроса и предложението, че вложеният IF
е труден за четене, можете също да направите това като няколко заявки, които не вършат никаква ненужна работа и са четими:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Когато A е NULL, то няма да отговаря на нито едно от тези условия и по този начин елиминира необходимостта да се указва, че A не е NULL.
След това няма нужда от третото условие, както предложи @Andre. Ако A е между 1 и 20, то се оставя както е.
И накрая, задаване на A на 0, където A е по-малко или равно на 1, изглежда необичайно. Стойностите от 1 ще бъдат променени на 0. Ако възнамерявате просто да зададете стойности по-малки от 1 (включително отрицателни стойности) на 0, тогава трябва да размените <
за <=
.