Дело не в том, что CASE
должно иметь более одного, WHEN...THEN
, оно заключается в том, что оно должно обрабатывать всю дату, которую вы ему даете.
Если вы удалили одно из предложений, вы уходитедыра.например,
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
При использовании этого оператора обновления, если parkFK
равно 2, обновление завершится неудачно, поскольку CASE не может обработать ввод.
Вы можете либо ограничить исходные данные, добавив еще одну строку в ваше предложение where (например, AND partFK in (1,2)
), либо добавить ELSE
к выражению case.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Однако, исходя из показанного вами оператора SQL, возможно, существует лучший способ.Предположительно, partFK является внешним ключом для некоторой другой таблицы.Можете ли вы извлечь значение для quantity
оттуда?