我有以下 SQL 语句,我正在尝试更新与 select 语句匹配的多行。
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