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

MySQL CASO... DONDE... ENTONCES sentencias

No es que el CASE debe tener más de uno, WHEN...THEN , es que debe manejar todos los datos que le des.

Si quitaste una de las cláusulas, dejas un hueco. por ejemplo

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;

Con esta declaración de actualización, si parkFK es 2, entonces la actualización falla porque CASE no puede manejar la entrada.

Puede limitar sus datos de origen agregando otra línea a su cláusula where (por ejemplo, AND partFK in (1,2) ), o puede agregar un ELSE a la expresión de caso.

UPDATE partsList SET quantity =  
CASE
  WHEN partFK = 1 THEN 4
  WHEN partFK = 2 THEN 8
  ELSE 12 
END
WHERE buildFK = 1;

Sin embargo, según la instrucción SQL que ha mostrado, probablemente haya una mejor manera. Presumiblemente, partFK es una clave externa para alguna otra tabla. ¿Puedes obtener el valor de quantity? de ahí?