我想选择表的所有行,然后是 1 到 9 之间的随机数:
select t.*, (select dbms_random.value(1,9) num from dual) as RandomNumber
from myTable t
但是随机数在行与行之间是相同的,只是查询的每次运行不同。如何在同一执行中使行与行之间的数字不同?
最佳答案
就像是?
select t.*, round(dbms_random.value() * 8) + 1 from foo t;
编辑:
David 指出这导致 1 和 9 的分布不均匀。
正如他所指出的,以下给出了更好的分布:
select t.*, floor(dbms_random.value(1, 10)) from foo t;
关于sql - 在 Oracle Query 中的每一行中生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568630/