2015-03-25 102 views
0

我有一张表,使用Java Quartz Scheduler,我必须一次获取1000行。要求是一次限制1000行,接下来是1000行等等(与MySQL限制查询相同)。Oracle SQL从十万行中一次选择1000行

我使用下面的查询:

select * from (select a.*, rownum rnum from (SELECT a.product_id as productId, 
p.project_id as projectId from <TABLE-1> a INNER JOIN <TABLE-2> p 
ON p.product_id = a.product_id ORDER BY a.product_id) 
a where rownum <= 1000) where rnum >= 1; 

的问题是上面的查询将返回这是因为返回的数据传递给MapListHandler(我不ResultSet中需要额外列ROWNUM)这返回结果转换成JSON,我路过这个JSON到没有预期的额外ROWNUM列中的web服务。\

数据库Oracle 11g企业版发布11.2.0.3.0

+1

Thanks @volerag。请记住:) – 2015-03-25 04:44:31

+0

如果您只是选择Web服务期望的列,会发生什么情况? – 2015-03-25 04:45:19

+0

是的,它在Oracle数据库上工作,但是从Java调度程序获取错误。下面的答案正在起作用。看到我的评论,我已更新您建议的查询。 – 2015-03-25 04:52:37

回答

1

不要在select子句中使用*。它应该工作。

+0

谢谢。有效。新的查询是这样的: 选择的productId,从PROJECT_ID(选择*,ROWNUM从RNUM(从 SELECT a.product_id作为的productId, p.project_id作为专案编号一个INNER JOIN p ON p.product_id = a.product_id。 ORDER BY a.product_id) a其中rownum <= 1000)其中rnum> = 1; – 2015-03-25 04:42:24