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

Instruções MySQL CASE...WHERE...THEN


Não é que o CASE deve ter mais de um, WHEN...THEN , é que ele deve lidar com todos os dados que você fornece.

Se você removeu uma das cláusulas, você deixa um buraco. por exemplo.
UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;

Com esta declaração de atualização, se parkFK for 2, a atualização falhará porque o CASE não pode manipular a entrada.

Você pode limitar seus dados de origem adicionando outra linha à sua cláusula where (por exemplo, AND partFK in (1,2) ), ou você pode adicionar um ELSE para a expressão case.
UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
  WHEN partFK = 2 THEN 8
  ELSE 12 
END
WHERE buildFK = 1;

No entanto, com base na instrução SQL que você mostrou, provavelmente há uma maneira melhor. Presumivelmente, partFK é uma chave estrangeira para alguma outra tabela. Você pode extrair o valor para quantity de lá?