如何从oracle数据库中随机获取logging?

我需要随机select行。 例如:假设一张表有100条logging,但是我只需要从这100条logging中只取得20条logging,并且loggingselect将会随机出现。我将如何从中find答案? 我使用oracle作为我的分贝。 任何build议都会对我有很大的帮助。 提前致谢..

SELECT * FROM ( SELECT * FROM table ORDER BY DBMS_RANDOM.VALUE) WHERE rownum < 21; 

SAMPLE()并不能保证给你准确的20行,但可能是合适的(并且对于大型表可能会比完整查询+随机sorting显着更好):

 SELECT * FROM table SAMPLE(20); 

注意: 20这里是一个大概的百分比,而不是所需的行数。 在这种情况下,因为你有100行,要得到大约20行,你要求20%的样本。

 SELECT * FROM table SAMPLE(10) WHERE ROWNUM <= 20; 

这是更有效的,因为它不需要sorting表。

 SELECT column FROM ( SELECT column, dbms_random.value FROM table ORDER BY 2 ) where rownum <= 20; 

要随机select20行,我认为你最好select随机排列的很多,然后select前20行。

就像是:

 Select * from (select * from table order by dbms_random.value) -- you can also use DBMS_RANDOM.RANDOM where rownum < 21; 

最好用于小型表格,以避免select大量的数据只丢弃大部分数据。