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



我是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条随机记录?

获得随机数的"简单"方法是使用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;

我怀疑有更好的方式来写你的查询。如果您需要在这方面的建议,请写另一个问题,包括示例数据,期望的结果,并描述您希望查询做什么。

Use SAMPLE clause:

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

最新更新