【问题标题】:Oracle random row from table表中的 Oracle 随机行
【发布时间】:2011-12-06 17:10:27
【问题描述】:

我找到了这个从 Oracle 表中选择随机行的解决方案。实际上是以随机方式对行进行排序,但您只能获取第一行以获得随机结果。

SELECT *
FROM table
ORDER BY dbms_random.value;

我只是不明白它是如何工作的。在 ORDER BY 之后,它应该是用于排序的列。我看到“dbms_random.value”返回一个小于零的值。这种行为可以解释还是只是这样?

谢谢

【问题讨论】:

    标签: oracle random row


    【解决方案1】:

    你也可以这样想:

    SELECT col1, col2, dbms_random.value
    FROM table
    ORDER BY 3
    

    在本例中,数字 3 = 第三列

    【讨论】:

      【解决方案2】:

      当你按dbms_random.value排序时,Oracle按表达式排序,而不是按列排序。Oracle对每条记录计算一个随机数,然后按这个数排序。

      以类似的方式,是这样的:

      select * from emp order by upper(ename);
      

      你有一个基于函数的 order by。

      【讨论】:

        猜你喜欢
        • 2017-01-03
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 2016-02-24
        • 2019-10-29
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多