我是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.value
或dbms_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)