To nie jest tak, że CASE
musi mieć więcej niż jeden, WHEN...THEN
, chodzi o to, że musi obsłużyć wszystkie dane, które mu podasz.
Jeśli usuniesz jedną z klauzul, zostawiasz dziurę. np.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Z tą instrukcją aktualizacji, jeśli parkFK
wynosi 2, aktualizacja kończy się niepowodzeniem, ponieważ CASE nie może obsłużyć danych wejściowych.
Możesz ograniczyć swoje dane źródłowe, dodając kolejną linię do swojej klauzuli where (np. AND partFK in (1,2)
) lub możesz dodać ELSE
do wyrażenia przypadku.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Jednak na podstawie przedstawionej instrukcji SQL prawdopodobnie istnieje lepszy sposób. Przypuszczalnie partFK jest kluczem obcym do jakiejś innej tabeli. Czy możesz pobrać wartość quantity
stamtąd?