需要SQL帮助 - 我希望使用不同的随机数生成和更新每一行中的列。
数据库#Oracle 10g。
示例 - 当我执行类似这样的操作时,它会更新所有具有相同编号的行
update mytable r
set r.generated_num =
(select floor(dbms_random.value(100,9999999)) from dual).
有什么建议吗?
答案 0 :(得分:9)
看起来子查询就是问题。
这似乎有效 -
update mytable r set r.generated_num = TRUNC(dbms_random.value(1,9999999))
答案 1 :(得分:0)
如果你真的需要一个独特的随机数,那么你将不得不生成比行数更多的数字。
请注意以下查询:
with generator as
(select /*+ materialize */ rownum rn from dba_objects where rownum <= 250)
select count(distinct rv), count(rv) from
(
select trunc(dbms_random.value(1,9999999)) as rv
from generator v1
cross join generator v2
cross join generator v3
where rownum <= 10000000
)
一些示例执行:
COUNT(DISTINCTRV) COUNT(RV)
----------------- ----------
6321429 10000000
6321827 10000000
6321941 10000000
6321507 10000000