Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite在一个查询中进行多个更新_Sql_Sqlite - Fatal编程技术网

SQLite在一个查询中进行多个更新

SQLite在一个查询中进行多个更新,sql,sqlite,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 = 'or

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


注意:我的实际值比这更复杂,因此忽略简单的函数将值设置为大写

您可以使用
大小写
表达式并决定要设置为
颜色
的值

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
作为表名,

作为冗长的
大小写表达式的替代,如果颜色与列表中给出的颜色匹配,您只需对颜色的第一个字母执行条件大写

update Colors
set Color = upper(substr(Color, 1, 1)) || substr(Color, 2)
where Color in ('blue', 'green', 'yellow', 'brown', 'orange')

我认为这是不可能的,您应该编写单独的查询您可能应该添加一个
WHERE
子句,这样
UPDATE
只作用于包含应该修改的颜色的记录。@TimBiegeleisen Oops。。thanx。。更新了我的答案。非常适合这种情况-我真的在寻找一个答案,我可以应用于更复杂的值(不仅仅是更新大写/小写的值)@Chicowitz那么一个
大小写
表达式通常可能会更好地为您服务,但这个查询非常适合您当前的问题。