Oracle从表中随机排

Adr*_*ian 13 oracle random row

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

SELECT *
FROM table
ORDER BY dbms_random.value;
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Kev*_*ton 23

你也可以这样想:

SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3
Run Code Online (Sandbox Code Playgroud)

在此示例中,数字3 =第三列


Ait*_*tor 7

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

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

select * from emp order by upper(ename);
Run Code Online (Sandbox Code Playgroud)

您有基于功能的订单.