sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar If Then Else en una consulta de actualización de MySQL?

Creo que estabas en un 99 % ahí:

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

Agrega el && A > 1 a la segunda instrucción IF y se cumple su tercera condición.

Editar:

Según el comentario de @Andre a la pregunta y la sugerencia de que el IF anidado es difícil de leer, también puede hacer esto como un par de consultas que no hacen ningún trabajo innecesario y son legibles:

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

Cuando A es NULL, no cumplirá ninguna de estas condiciones y, por lo tanto, elimina la necesidad de especificar que A no sea NULL.

A continuación, no hay necesidad de la tercera condición como sugirió @Andre. Si A está entre 1 y 20, se deja como está.

Finalmente, establecer A en 0 donde A es menor o igual a 1 parece inusual. Los valores de 1 se cambiarán a 0. Si tiene la intención de simplemente establecer valores inferiores a 1 (incluidos los valores negativos) a 0, debe cambiar < para <= .