ResultSet分页问题

qljsd 2003-01-21 10:28:12
我想问:在Oracle里,怎样获得一个ResultSet的第某行到第某行,用sql语句实现。

比如,我传一个页号(3),一个页大小(20),就应该取3*20+1行到(3+1)*20行。
...全文
140 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-01-21
  • 打赏
  • 举报
回复
where id>=10 and id<=20;
qljsd 2003-01-21
  • 打赏
  • 举报
回复
散分啦!
beckhambobo 2003-01-21
  • 打赏
  • 举报
回复
当然可以。
qljsd 2003-01-21
  • 打赏
  • 举报
回复
还有一个问题:
应该是 between 10 and 20 吧?
qljsd 2003-01-21
  • 打赏
  • 举报
回复
我再问一下:
我这样写行不行:
select * from (select t.*,rownum id from table t where "我所需的条件" order by "我所需的字段")
where id between 10 to 20
qljsd 2003-01-21
  • 打赏
  • 举报
回复
我再问一下:
我这样写行不行:
select * from (select t.*,rownum id from table t where "我所需的条件")
where id between 10 to 20
penitent 2003-01-21
  • 打赏
  • 举报
回复
select * from tab where rownum <= (3+1)*20
minus
select * from tab where rownum <= 3*20+1;
的速度没有
select * from (select t.*,rownum id from table t)
where id between 10 to 20
penitent 2003-01-21
  • 打赏
  • 举报
回复
luckysxn(风花雪) 的是错的,rownum不能那样用
select * from (select t.*,rownum id from table t)
where id between 10 to 20
上面少了一个t
snowy_howe 2003-01-21
  • 打赏
  • 举报
回复
可以用
select * from tab where rownum <= (3+1)*20
minus
select * from tab where rownum <= 3*20+1;
但是速度不能保证。

另外,我的疑问是如果你想达到这样的结果,为何
不在表结构中加上比如象行id这样的字段,就容易
做了。
penitent 2003-01-21
  • 打赏
  • 举报
回复
select * from (select t.*,rownum id from table)
where id between 10 to 20
qljsd 2003-01-21
  • 打赏
  • 举报
回复
哪正确答案是什么呀!
snowy_howe 2003-01-21
  • 打赏
  • 举报
回复
SQL> select rownum,month,sell from sale where rownum=2;(1以上都查不到记录)

没有查到记录
SQL> select rownum,month,sell from sale where rownum>5;
(由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录)
没有查到记录

luckysxn(风花雪) 同学请注意rownum 用法
luckysxn 2003-01-21
  • 打赏
  • 举报
回复
select * from table where rownum >=n1 and ronum <= n2

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧