表中的Oracle随机行

表中的Oracle随机行,oracle,random,row,Oracle,Random,Row,我在Oracle中找到了从表中随机选择一行的解决方案。实际上是以随机方式对行进行排序,但对于随机结果,只能获取第一行 SELECT * FROM table ORDER BY dbms_random.value; 我只是不明白它是怎么工作的。在ORDER BY之后,它应该是用于排序的列。我看到“dbms_random.value”返回的值小于零。这种行为可以解释,还是就这样 谢谢当您按dbms_random.value排序时,Oracle按表达式排序,而不是按列排序。对于每个记录,Oracle

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

SELECT *
FROM table
ORDER BY dbms_random.value;
我只是不明白它是怎么工作的。在ORDER BY之后,它应该是用于排序的列。我看到“dbms_random.value”返回的值小于零。这种行为可以解释,还是就这样


谢谢

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

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

select * from emp order by upper(ename);
SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3

您有一个基于函数的order by

你也可以这样想:

select * from emp order by upper(ename);
SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3
在本例中,数字3=第三列