Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL CASE...WHERE...THEN-Anweisungen

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?