У меня есть следующий оператор SQL, где я пытаюсь обновить несколько строк, соответствующих оператору выбора.
UPDATE Cars
SET engineSize = CASE specCode WHEN 1 THEN value ELSE engineSize END
FROM Cars
INNER JOIN CarSpecs ON CarsSpecs.carID = Cars.carID
Мои таблицы таковы:
Cars
carID engineSize ...
1 0
2 0
CarSpecs
carID specCode value
1 1 1800
1 2 Blue
1 3 Petrol
2 1 2200
2 2 Green
2 3 Petrol
specCode относится к типу спецификации, которую я хочу обновить в таблице Cars (1 - размер двигателя)
Когда я запускаю запрос, он возвращается NULL каждый раз. На мой взгляд, он должен найти specCode = 1 и установить engineSize равным 1800, после чего он просто устанавливает его на первое найденное значение.
Есть идеи?
Редактировать: Мне нужно обновить несколько столбцов в таблице автомобилей. Вот причина использования CASE, а именно:
UPDATE Cars
SET engineSize = CASE specCode WHEN 1 THEN value ELSE engineSize END,
colour = CASE specCode WHEN 2 THEN value ELSE colour END
FROM Cars
INNER JOIN CarSpecs ON CarsSpecs.carID = Cars.carID