这与其他问题类似,但它似乎因数据库逐个数据库的实现而异。我使用的是postgres,NEWID
之类的东西似乎不存在。
这就是我想要的工作:
update foo set bar = (select floor(random() * 10) + 1);
我理解为什么它没有但我似乎无法找到适合Postgres的合适解决方案。我希望bar
的值是1到10之间的随机数,它与每行不同。
答案 0 :(得分:21)
我认为Postgres可能会优化子查询。这不起作用吗?
update foo
set bar = floor(random() * 9 + 1); -- from 1 to 10, inclusive
答案 1 :(得分:3)
对于PostgreSQL(在9.5上测试),可以通过添加伪造的“ where”子句来解决
update foo set bar = (select floor(random() * 10) + 1 where foo.id = foo.id);