2011-10-13 128 views
13

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

SELECT * 
FROM table 
ORDER BY dbms_random.value; 

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

感谢

回答

23

你也可以认为它是这样的:

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

在这个例子中的数字3 =第三列

+0

天才要比解决方案 –

7

当你命令由DBMS_RANDOM.VALUE,通过表达甲骨文的订单,而不是一个column.For每条记录甲骨文计算一个随机数,并通过这个号码,然后顺序。

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

select * from emp order by upper(ename); 

你必须通过基于功能的顺序。