Není to ten CASE
musí mít více než jeden, WHEN...THEN
, je to, že musí zpracovat všechna data, která mu poskytnete.
Pokud jste odstranili jednu z klauzulí, zanecháte díru. např.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
S tímto prohlášením o aktualizaci, pokud parkFK
je 2, pak se aktualizace nezdaří, protože CASE nemůže zpracovat vstup.
Zdrojová data můžete omezit přidáním dalšího řádku do klauzule where (např. AND partFK in (1,2)
), nebo můžete přidat ELSE
na výraz případu.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Na základě příkazu SQL, který jste ukázali, však pravděpodobně existuje lepší způsob. Pravděpodobně je partFK cizím klíčem k nějaké jiné tabulce. Můžete získat hodnotu pro quantity
odtud?