Oracle SQL - 生成并更新每行中具有不同随机数的列

时间:2012-01-05 22:10:01

标签: sql oracle random oracle10g

需要SQL帮助 - 我希望使用不同的随机数生成和更新每一行中的列。

数据库#Oracle 10g。

示例 - 当我执行类似这样的操作时,它会更新所有具有相同编号的行

update mytable r 
set r.generated_num = 
(select floor(dbms_random.value(100,9999999)) from dual).

有什么建议吗?

2 个答案:

答案 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
相关问题