在一个查询中SQLite多个UPDATES

时间:2016-12-16 04:37:27

标签: sql sqlite

在表格颜色中,有一个颜色列。我需要根据不同的条件对此列中的值进行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次更新吗?

注意:我的实际值比这更复杂,所以忽略简单函数使值大写

2 个答案:

答案 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')