2011-10-13 56 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); 

你必須通過基於功能的順序。