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

MySQL CASE...WHERE...THEN istruzioni

Non è che il CASE deve averne più di uno, WHEN...THEN , è che deve gestire tutti i dati che gli fornisci.

Se hai rimosso una delle clausole, lasci un buco. es.

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

Con questa dichiarazione di aggiornamento, se parkFK è 2, l'aggiornamento non riesce perché CASE non è in grado di gestire l'input.

Puoi limitare i tuoi dati di origine aggiungendo un'altra riga alla tua clausola where (ad es. AND partFK in (1,2) ), oppure puoi aggiungere un ELSE all'espressione case.

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

Tuttavia, in base all'istruzione SQL che hai mostrato, probabilmente esiste un modo migliore. Presumibilmente, partFK è una chiave esterna per qualche altra tabella. Puoi estrarre il valore per quantity da lì?