Saya pikir Anda 99% di sana:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Tambahkan && A > 1
ke pernyataan IF kedua dan kondisi ketiga Anda terpenuhi.
Sunting:
Per komentar @Andre untuk pertanyaan dan saran bahwa IF
. bersarang sulit dibaca, Anda juga dapat melakukan ini sebagai beberapa kueri yang tidak melakukan pekerjaan yang tidak perlu dan dapat dibaca:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Ketika A adalah NULL, itu tidak akan memenuhi salah satu dari kondisi ini, dan dengan demikian menghilangkan kebutuhan untuk menentukan bahwa A tidak menjadi NULL.
Selanjutnya, tidak perlu kondisi ketiga seperti yang disarankan @Andre. Jika A antara 1 dan 20, akan dibiarkan apa adanya.
Akhirnya, pengaturan A ke 0 di mana A kurang dari atau sama dengan 1 tampaknya tidak biasa. Nilai 1 akan diubah menjadi 0. Jika Anda hanya ingin menetapkan nilai kurang dari 1 (termasuk nilai negatif) ke 0, maka Anda harus menukar <
untuk <
.