Oracle从表中随机排

时间:2011-10-13 06:47:26

标签: oracle random row

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

SELECT *
FROM table
ORDER BY dbms_random.value;

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

由于

2 个答案:

答案 0 :(得分:23)

你也可以这样想:

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

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

答案 1 :(得分:7)

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

以类似的方式,就像这样:

select * from emp order by upper(ename);

您有基于功能的订单。