这是一个在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组合。但由于某种原因,一旦我尝试更新实际的表,它就失败了。我尝试了几种铸造组合,但它似乎没什么帮助。
我在这里缺少什么?
答案 0 :(得分:1)
怎么样:
update test set b = (random() > 0.5);