如何重复此查询100次?

时间:2019-03-25 22:32:42

标签: sql oracle

我有这个查询来从一张桌子中生成一个随机数

选择DBMS_RANDOM.value作为val 来自c4_trt 其中rownum = 1;

现在我要从此表中生成100个随机数。

请注意:我想从此特定表中生成一个随机数,而不是对偶数。但是我不确定是否可以从特定表中生成随机数。

谢谢!

2 个答案:

答案 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
;

下图显示了使用双表示例时的输出结果。

enter image description here

答案 1 :(得分:1)

不确定为什么需要或想要,但是如果您至少有100个,则可以使用 表中的行,这只是为了使rownum开心。您使用的表格无关紧要。

select DBMS_RANDOM.value as val from c4_trt where rownum =< 100;