繁体   English   中英

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

[英]Oracle SQL - Generate and update a column with different random number in every row

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

数据库#Oracle 10g。

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

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

有什么建议?

看起来像子查询是问题。

这似乎是有效的 -

update mytable r set r.generated_num = TRUNC(dbms_random.value(1,9999999))

如果你真的需要一个独特的随机数,那么你将不得不生成比行数更多的数字。

请注意以下查询:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM