我是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个随机记录?任何建议将不胜感激。
答案 0 :(得分:3)
获取随机数的“简单”方法是使用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;
我怀疑有更好的方法来编写查询。如果您需要有关此方面的建议,请编写其他问题,包含示例数据,所需结果,并描述您希望查询执行的操作。
答案 1 :(得分:2)
使用SAMPLE
子句:
select * from data t SAMPLE(1) left outer join comment c on (t.id = c.id)