我怎样才能重复这个查询 100 次?
Posted
技术标签:
【中文标题】我怎样才能重复这个查询 100 次?【英文标题】:How can I repeat this query 100 times? 【发布时间】:2019-03-25 22:32:41 【问题描述】:我有这个查询从一个表中生成一个随机数
选择 DBMS_RANDOM.value 作为 val 从 c4_trt 其中rownum=1;
现在我想从这个表中生成 100 个随机数。
请注意:我想从这个特定的表中生成一个随机数,而不是从对偶。但我不确定是否可以从特定表中生成随机数。
谢谢大家!
【问题讨论】:
【参考方案1】:您在问题中表示您不想看到利用 Oracle 的双虚拟表的解决方案。除非您的表在您从中选择的表中已经有 100 多条记录,否则我目前看不到一种方法可以让您获得 100 条显示随机数的记录,除非您使用按级别连接。
下面我提供了两个答案,可以在 100 行输出中获得 100 个随机数。第一个示例使用对偶表和使用 LEVEL 的按级别连接来限制行 CONNECT BY LEVEL <= 100
。第二个示例使用 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
此示例使用 Oracle 的 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
;
下图显示了使用双表示例时的输出。
【讨论】:
非常感谢!是的,我的表 c4_trt 有 10M 行,但我确实想从这个表中生成一个随机数并重复 100 次。【参考方案2】:不确定您为什么需要或想要这样做,但如果您至少有 100 个,这将起作用 表中的行,这只是为了让 rownum 开心。您使用的表格无关紧要。
select DBMS_RANDOM.value as val from c4_trt where rownum =< 100;
【讨论】:
以上是关于我怎样才能重复这个查询 100 次?的主要内容,如果未能解决你的问题,请参考以下文章
我怎样才能使这个 WHERE NOT EXISTS 查询更有效