У меня есть следующий оператор SQL, в котором я пытаюсь обновить несколько строк, соответствующих выражению select.UPDATE Несколько строк с использованием CASE в SQL 2008
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 относится к типу спецификации Я хочу, чтобы обновить в таблице Автомобили (1 является объем двигателя)
Когда я бегу запрос возвращает NULL каждый раз. Как я вижу, он должен найти specCode = 1 и установить engineSize в 1800, после того как он будет установлен, он просто устанавливает его в первое найденное значение.
Любые идеи?
Редактировать: Мне нужно обновить несколько столбцов в таблице Cars. Это причина для использования 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
, когда вы говорите «он возвращается в нуль», вы имеете в виду, что поле размера двигателя установлено равным нулю для всех записей? Будете ли вы иметь записи для каждого carID, где specCode = 1 в таблице спецификаций? – Ray