我怎样才能重复这个查询 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 查询更有效

怎么才能用js实现随机选取10–100之间的10个且不重复的数字存入一个数组?

我怎样才能找到间隔 100 天的金额?

为啥这个 pg 查询这么慢?我怎样才能让它更快?

我怎样才能使这个查询 sargable?

我怎样才能让这个重复而不被卡在无效输入上?