SQLite在一个查询中进行多个更新
在表颜色中,有一个颜色列。我需要根据不同的条件对此列中的值进行5次更新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
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那么一个大小写
表达式通常可能会更好地为您服务,但这个查询非常适合您当前的问题。