为简单起见,假设我有一列“Hour”,其值为 10 或 12。我希望更新一个新列 Hour_type,如果 Hour 值为 10,则为“A”,如果为 12,则为 B,依此类推在。我可以使用 CASE 输出一列“Hour_type”,如下
SELECT CASE WHEN Hour = 10 then 'A'
WHEN hour = 12 then 'B'
else 'c'
end
as Hour_type
from Traffic_Counts
这会输出正确的答案,但不会将值插入表中。
我希望使用这些值设置表中存在的列。
SELECT CASE WHEN Hour = 10 then 'A'
WHEN hour = 12 then 'B'
end
as Hour_type
from Traffic_Counts set Hour_type = Hour_type
这会导致语法错误。
在伪代码中,我尝试向这个简单的更新列添加“if”
update table set Hour_type = 'a' if Hour = 10,
'b' if Hour = 12;
最佳答案
case [...] end
block 是一个表达式。 update
用于从表达式中设置
列。因此,只需获取整个 case [...] end
block ,并将其作为所需列的 update
的右侧即可。这也适用于任何其他可选择的表达式(除非类型冲突等)
关于mysql - 使用 CASE 根据其他列值更新列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101276/