1

可能重复:
使用 Oracle 进行分页

我尝试从 11 行开始选择数据。我使用 select e_name from copy where rownum>10;

这不会显示任何内容.. 请帮我在表格中选择第 11 行到第 15 行

4

4 回答 4

3

您不能像那样使用 rownum,您需要将所有内容包装到派生表中:

select *
from (
  select *,
         rownum as rn
  form your_table
  order by some_column
) 
where rn between 11 and 15

您应该order by在内部查询中使用 an ,否则随着时间的推移您将无法获得一致的结果。关系表中的行没有任何顺序,因此数据库可以自由地以它认为合适的任何顺序返回行。

请阅读手册了解更多详情。您的查询不起作用的原因已通过示例记录在那里。

http://docs.oracle.com/cd/E11882_01/server.112/e26088/pseudocolumns009.htm#i1006297

于 2012-08-31T06:42:59.053 回答
1

你必须使用喜欢

select e_name
from (select e_name,rownum rno from copy)
where rno > 10 and rno < 16

示例示例

于 2012-08-31T06:42:42.470 回答
0

您也可以使用分析函数 row_number() 。请考虑http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm

于 2012-08-31T07:38:19.580 回答
0

首先编写将选择所有行的查询,如下所示:-

select ename from employee

现在在您的查询中添加一个 rownum 列,rownum 将帮助您识别查询结果中的行数

select rownum r,ename from employee

现在将您的查询作为子查询并将范围应用于“r”(rownum)

select * from (selecr rownum r, ename from employee) subq where subq.r between 11 and 15
于 2012-08-31T08:43:27.383 回答