select ステートメントに一致する複数の行を更新しようとしている次の 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 に設定し、設定後、最初に見つかった値に設定するだけです。
何か案は?
編集: 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