SQL更新在一个语句而不是两个

时间:2011-07-14 09:48:13

标签: sql postgresql

是否可以在1个语句而不是2个语句中执行以下操作。 我需要为一个id设置isActive标志,并将所有其他ID设置为false。 我正在使用postgres DB。

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

3 个答案:

答案 0 :(得分:4)

这有用吗?

update tblnames
set isActive = (id = 4)

如果它没有(我不太了解Postgres语法),这肯定会有效:

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

答案 1 :(得分:2)

update tblnames
set isActive = (id = 4)

不知道你是否可以在更新中使用布尔表达式,但它值得一试;)

答案 2 :(得分:0)

UPDATE tblnames
   SET isActive = CASE 
                    WHEN id = 4 THEN TRUE
                    WHEN id <> 4 THEN FALSE
                  END
 WHERE id IS NOT NULL;