Mysql
 sql >> Database >  >> RDS >> Mysql

Come utilizzare If Then Else in una query di aggiornamento MySQL?

Penso che tu fossi lì al 99%:

UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Aggiungi il && A > 1 alla seconda istruzione IF e la tua terza condizione è soddisfatta.

Modifica:

Per il commento di @Andre alla domanda e il suggerimento che il IF nidificato è difficile da leggere, potresti anche farlo come un paio di query che non fanno alcun lavoro inutile e sono leggibili:

UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Quando A è NULL, non soddisfa nessuna di queste condizioni, eliminando così la necessità di specificare che A non sia NULL.

Successivamente, non è necessaria la terza condizione come suggerito da @Andre. Se A è compreso tra 1 e 20, viene lasciato così com'è.

Infine, impostare A su 0 dove A è minore o uguale a 1 sembra insolito. I valori di 1 verranno cambiati in 0. Se intendi semplicemente impostare i valori inferiori a 1 (inclusi i valori negativi) su 0, devi scambiare < per <= .