是否可以在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
答案 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;