Ich glaube, du warst zu 99 % dabei:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Fügen Sie && A > 1
hinzu zur zweiten IF-Anweisung und Ihre dritte Bedingung ist erfüllt.
Bearbeiten:
Per @Andres Kommentar zur Frage und dem Vorschlag, dass der verschachtelte IF
schwer lesbar ist, könnten Sie dies auch als ein paar Abfragen tun, die keine unnötige Arbeit machen und lesbar sind:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Wenn A NULL ist, erfüllt es keine dieser Bedingungen, und somit entfällt die Notwendigkeit, anzugeben, dass A nicht NULL sein darf.
Als nächstes ist die dritte Bedingung nicht erforderlich, wie @Andre vorgeschlagen hat. Wenn A zwischen 1 und 20 liegt, wird es unverändert gelassen.
Schließlich erscheint es ungewöhnlich, A auf 0 zu setzen, wenn A kleiner oder gleich 1 ist. Werte von 1 werden auf 0 geändert. Wenn Sie beabsichtigen, Werte kleiner als 1 (einschließlich negativer Werte) einfach auf 0 zu setzen, sollten Sie <
austauschen für <=
.