PostgreSQL没有从subselect更新/复制boolean?

时间:2016-10-17 22:41:46

标签: postgresql

这是一个在PostgreSQL v9.5中出现意外行为的简短代码示例:

create table test (a boolean, b boolean);
insert into test (a) values ('true'),('true'),('true'),('true'),('true');
update test set b = rand.val from (select random() > 0.5 as val from test) as rand;

我希望列b采用随机的真/假值,但由于某种原因,它总是错误的。如果我运行以下子选项:

select random() > 0.5 as val from test;

它会根据需要返回随机的true / false组合。但由于某种原因,一旦我尝试更新实际的表,它就失败了。我尝试了几种铸造组合,但它似乎没什么帮助。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

怎么样:

update test set b = (random() > 0.5);