Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar If Then Else em uma consulta de atualização do MySQL?


Acho que você estava 99% lá:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Adicione o && A > 1 para a segunda instrução IF e sua terceira condição é satisfeita.

Editar:

De acordo com o comentário de @Andre à pergunta e a sugestão de que o IF aninhado é difícil de ler, você também pode fazer isso como algumas consultas que não fazem nenhum trabalho desnecessário e são legíveis:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Quando A for NULL, ele não atenderá a nenhuma dessas condições e, portanto, elimina a necessidade de especificar que A não seja NULL.

Em seguida, não há necessidade da terceira condição, como sugeriu @Andre. Se A estiver entre 1 e 20, fica como está.

Finalmente, definir A para 0 onde A é menor ou igual a 1 parece incomum. Os valores de 1 serão alterados para 0. Se você pretende simplesmente definir valores menores que 1 (incluindo valores negativos) para 0, você deve trocar < para <= .