Das ist nicht der CASE
muss mehr als einen haben, WHEN...THEN
, es muss alle Daten verarbeiten, die Sie ihm geben.
Wenn Sie eine der Klauseln entfernt haben, hinterlassen Sie eine Lücke. zB
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Mit dieser Update-Anweisung, wenn parkFK
2 ist, dann schlägt die Aktualisierung fehl, weil CASE die Eingabe nicht verarbeiten kann.
Sie können Ihre Quelldaten entweder einschränken, indem Sie Ihrer Where-Klausel eine weitere Zeile hinzufügen (z. B. AND partFK in (1,2)
), oder Sie könnten ein ELSE
hinzufügen zum case-Ausdruck.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Basierend auf der von Ihnen gezeigten SQL-Anweisung gibt es jedoch wahrscheinlich einen besseren Weg. Vermutlich ist partFK ein Fremdschlüssel zu einer anderen Tabelle. Können Sie den Wert für quantity
ziehen von dort?