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ì?