1

我需要在数据库中的一个列上查询一个表VARCHAR2。我需要分块检索记录,而不是一次全部检索。ROWNUM用于此目的。

查询是这样的:

select * from SOMETABLE
where SOMECOLUMN > ?
and rownum <= 100
order by SOMECOLUMN

通过更改SOMECOLUMN值重复运行此查询。首先,应该为这个查询提供最小的VARCAHAR2值,以便我得到前 100 条记录(虽然不是按任何特定顺序)。下一次,SOMECOLUMN使用第 100 条记录中的值(order by为此目的添加到查询中),以便获取接下来的 100 条记录,依此类推。

(假设:SOMECOLUMN值是唯一的)。

提供给该查询的初始最小值是多少?

4

1 回答 1

1

您可以使用MIN()orMAX()也可用于 VARCHAR2 数据,而不仅仅是数字。你可以使用这个:

with t as
   (select SOMETABLE.*, rownum as THE_ROW from SOMETABLE order by SOMECOLUMN)
select *
from t
where THE_ROW between 1 and 100 -- (-> between 101 and 200, between 201 and 300 ...)
于 2013-12-26T18:35:03.233 回答