Myslím, že jsi tam byl na 99 %:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Přidejte && A > 1
na druhý příkaz IF a vaše třetí podmínka je splněna.
Upravit:
Podle komentáře @Andre k otázce a návrhu, že vnořené IF
je obtížné číst, můžete to udělat také jako několik dotazů, které nedělají žádnou zbytečnou práci a jsou čitelné:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Když má A hodnotu NULL, nesplňuje ani jednu z těchto podmínek, a proto není nutné uvádět, že A nemá hodnotu NULL.
Dále není potřeba třetí podmínka, jak navrhl @Andre. Pokud je A mezi 1 a 20, zůstane tak, jak je.
Konečně nastavení A na 0, kde A je menší nebo rovno 1, se zdá neobvyklé. Hodnoty 1 se změní na 0. Pokud máte v úmyslu jednoduše nastavit hodnoty menší než 1 (včetně záporných hodnot) na 0, měli byste zaměnit <
pro <=
.