我找到了这个解决方案,用于从Oracle中的表中选择一个随机行。实际上是以随机方式对行进行排序,但您只能获取随机结果的第一行。
SELECT *
FROM table
ORDER BY dbms_random.value;
我只是不明白它是如何工作的。在ORDER BY之后,它应该是用于排序的列。我看到“dbms_random.value”返回一个小于零的值。这种行为可以解释或者就是这样吗?
由于
答案 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);
您有基于功能的订单。