2011-07-14 10 views
3

2の代わりに1つのステートメントで次のことを実行できますか? 1つのidにisActiveフラグを設定し、他のすべてをfalseに設定する必要があります。 ポストグルDBを使用しています。2つではなく1つのステートメントでSQLを更新する

tblNames 
------------------------ 
id,name,isActive 
1,'n1',true 
2,'n2',false 
3,'n3',false 
4,'n4',false 

update tblnames 
set isActive = true 
where id = 4 

update tblnames 
set isActive = false 
where id != 4 

答えて

4

は、その仕事をしていますか?

update tblnames 
set isActive case id when 4 then true else false end 
+0

ありがとうありがとうありがとう – ender

2
update tblnames 
set isActive = (id = 4) 

あなたはアップデートでブール式を使用することができれば知っているが、それはショットの価値がないようにしてください。)

+0

メガバイトのisActive =(のid == 4) – stukselbax

+0

これを:それは(私は十分Postgresの構文を知らない)、これは確かに動作しますしない場合は

update tblnames set isActive = (id = 4) 

おかげで – ender

0
UPDATE tblnames 
    SET isActive = CASE 
        WHEN id = 4 THEN TRUE 
        WHEN id <> 4 THEN FALSE 
        END 
WHERE id IS NOT NULL; 
関連する問題