あなたは99%そこにいたと思います:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
&& A > 1
を追加します 2番目のIFステートメントに移動し、3番目の条件が満たされます。
編集:
ネストされたIF
という質問と提案に対する@Andreのコメントによる 読みにくいので、不要な作業を行わずに読み取り可能ないくつかのクエリとしてこれを行うこともできます。
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
AがNULLの場合、これらの条件のいずれも満たさないため、AがNULLでないことを指定する必要がなくなります。
次に、@Andreが提案したように3番目の条件は必要ありません。 Aが1〜20の場合、そのままになります。
最後に、Aを1以下に設定するAを0に設定することは、珍しいようです。 1の値は0に変更されます。1未満の値(負の値を含む)を0に設定するだけの場合は、<
を交換する必要があります。 <=
の場合 。