2016-12-16 15 views
2

テーブルの色には、[色]列があります。私は異なる条件に基づいてこの列の値を5回更新する必要があります。1つのクエリで複数のSQLiteを更新

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' 

は、私は1つのクエリ内のテーブルにこれらの5回の更新を行うことができますか?

注:私の実際の値がこれよりもっと複雑ですので、あなたがCASE表現を利用すると、あなたはColorに設定する値かを決定することができます

+0

私はそれが可能だそう思ういけない、あなたは 'UPDATE'のみが修正されるべき色を含むレコードに作用するので、あなたはおそらく' WHERE'句に追加する必要があります –

答えて

3

大文字の値を作るために、単純な機能を無視してください。

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

注:デフォルトのスキーマは、その後長いCASE表現する代わりに、テーブル名として

+1

別々のクエリを記述する必要があります。 –

+0

@TimBiegeleisenおっと..ありがとうございました。私の答えを更新しました。 –

2

dbo.Colorsを使用した場合は、あなたは、単にの最初の文字の条件付きの大文字化を行うことができます色はあなたがあなたのリストに与えたものと一致するはずです。

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

完璧な解決策 –

+0

この状況に完璧です - 私は実際にはより複雑な値に適用できる答えを探していました(大文字/小文字の値を更新するだけではありません) – Chicowitz

+1

@Chicowitzそれでは、 'CASE'式は、この質問は現在の質問によく合います。 –

関連する問題