Det är inte det CASE
måste ha mer än en, WHEN...THEN
, det är att den måste hantera all data du ger den.
Om du tog bort en av klausulerna lämnar du ett hål. t.ex.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Med denna uppdateringssats, om parkFK
är 2, då misslyckas uppdateringen eftersom CASE inte kan hantera inmatningen.
Du kan antingen begränsa dina källdata genom att lägga till ytterligare en rad till din where-klausul (t.ex. AND partFK in (1,2)
), eller så kan du lägga till en ELSE
till kasusuttrycket.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Men baserat på SQL-satsen du har visat finns det förmodligen ett bättre sätt. Förmodligen är partFK en främmande nyckel till något annat bord. Kan du dra värdet för quantity
därifrån?