如何使用dbms_random从Oracle检索随机记录

时间:2014-08-20 11:08:02

标签: sql database oracle random

我是sql的初学者,我想知道你是否可以帮我弄清楚如何从Oracle中检索随机记录。我有以下查询:

SELECT p.* from data p where p.id in 
(SELECT DISTINCT t.id   FROM DATA t, comment c, PTV ptv   
WHERE t.code not in ('x','y','Z') 
and t.id = c.id(+)   and ptv.code = t.code   and ptv.code = t.code   
and ptv.version = t.version  AND t.TASK_CODE != 'DRAFT')

如何从上述查询返回的结果中选择X个随机记录?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:3)

获取随机数的“简单”方法是使用dbms_random.valuedbms_random.random()rownum

with t as (
      <your query here>
     )
select x.*
from (select t.*
      from t
      order by dbms_random.value
     ) x
where rownum < 10;

我怀疑有更好的方法来编写查询。如果您需要有关此方面的建议,请编写其他问题,包含示例数据,所需结果,并描述您希望查询执行的操作。

答案 1 :(得分:2)

使用SAMPLE子句:

select * from data t SAMPLE(1) left outer join comment c on (t.id = c.id)