在表格颜色中,有一个颜色列。我需要根据不同的条件对此列中的值进行5次更新。
SET Color = 'Blue' WHERE Color = 'blue'
SET Color = 'Green' WHERE Color = 'green'
SET Color = 'Yellow' WHERE Color = 'yellow'
SET Color = 'Brown' WHERE Color = 'brown'
SET Color = 'Orange' WHERE Color = 'orange'
我可以在一个查询中对表进行这5次更新吗?
注意:我的实际值比这更复杂,所以忽略简单函数使值大写
答案 0 :(得分:3)
您可以使用CASE
表达式并决定要将哪个值设置为Color
。
UPDATE [YourSchema].[Colors]
SET Color= CASE
WHEN Color = 'blue' THEN 'Blue'
WHEN Color = 'green' THEN 'Green'
WHEN Color = 'yellow' THEN 'Yellow'
WHEN Color = 'brown' THEN 'Brown'
WHEN Color = 'orange' THEN 'Orange'
END
WHERE Color IN ('blue', 'green', 'yellow', 'brown', 'orange')
注意:如果您使用的是默认架构,请使用dbo.Colors
作为表名,
答案 1 :(得分:2)
作为冗长的CASE
表达式的替代方法,您可以简单地对颜色的第一个字母进行条件大写,其颜色应与列表中的颜色匹配。
update Colors
set Color = upper(substr(Color, 1, 1)) || substr(Color, 2)
where Color in ('blue', 'green', 'yellow', 'brown', 'orange')