我正在尝试从连接中选择5000到10000的记录子集。我这样的查询在过去有效,但它们稍微复杂一些。这是我试图使用的查询,如果我删除rownum / rnum引用(因此外部选择)我按预期收到所有记录,所以我知道逻辑是好的。
SELECT *
FROM (
SELECT unique cl.riid_,
rownum as rnum
FROM <table 1> cl, <table 3> mil
WHERE cl.opt = 0 AND
(cl.st_ != 'QT' OR cl.st_ IS NULL) AND
cl.hh = 0 AND
cl._ID_ = mil._ID_ AND
mil.TYPE in (0, 1, 2, 3, 4) AND
EXISTS
( SELECT 'x'
FROM <table 2> sub
WHERE cl.ea_ = lower(sub.ea_) AND
sub.status = 0 AND
lower(sub.subscription) = 'partner'
) AND
rownum <= 10000
)
where rnum > 5000
所以当我运行这个查询时,我从我们的系统收到这条消息(这不是一个Oracle cli接口,而是一个存在于它顶部的web层,所以如果它与众不同,请带有错误消息。 )
'错误:选择查看的资源无效。在查看数据之前,您可能需要重新创建或修复对象。'
资源将是查询的结果。
那么有没有人知道最新情况或更好的方法呢?
谢谢!
答案 0 :(得分:2)
我相信你在Oracle中寻找类似的东西:
select *
from ( select a.*, rownum rnum
from ( YOUR_QUERY_GOES_HERE -- including the order by ) a
where rownum <= MAX_ROWS )
where rnum >= MIN_ROWS
/
Ask Tom的好讨论是here