我有这个查询来从一张桌子中生成一个随机数
选择DBMS_RANDOM.value作为val 来自c4_trt 其中rownum = 1;
现在我要从此表中生成100个随机数。
请注意:我想从此特定表中生成一个随机数,而不是对偶数。但是我不确定是否可以从特定表中生成随机数。
谢谢!
答案 0 :(得分:2)
您在问题中说,您不想看到利用Oracle双重伪表的解决方案。除非您的表在表中已经有100条以上的记录,否则您从中选择。除非您使用“按级别连接”,否则我目前看不到获取100条显示随机数的记录的方法。
下面,我提供了两个答案,这些答案将在100行输出中为您提供100个随机数。 FIRST示例使用对偶表和使用LEVEL进行按级别连接来限制行CONNECT BY LEVEL <= 100
。 SECOND示例使用rownum,并使用rownum <= 100
限制行。
Using the dual table
SELECT LEVEL, floor(dbms_random.value(1,11)) AS rand_num /* Returns random numbers 1 thru 10 */
FROM dual
CONNECT BY LEVEL <= 100
;
Using any other table
此示例使用Oracles all_objects字典视图,因为它返回的行数超过100行,因此我决定使用此视图,但知道任何返回100行以上的表/视图都可以在此示例中工作。
SELECT floor(dbms_random.value(1,11)) AS rand_num, /* Returns random numbers 1 thru 10 */
rownum as at_row_num
FROM all_objects
WHERE rownum <= 100
;
下图显示了使用双表示例时的输出结果。
答案 1 :(得分:1)
不确定为什么需要或想要,但是如果您至少有100个,则可以使用 表中的行,这只是为了使rownum开心。您使用的表格无关紧要。
select DBMS_RANDOM.value as val from c4_trt where rownum =< 100;