oracle分页时遇到了怪现象

lxhui204 2006-06-12 03:53:54
oracle中要选择中间n条记录该咋办阿?
我用了两种方式都不行,
1 select * from (select * from tablename where rownum<=20 order by tablename.id desc) a
where rownum<=10 order by tablename.id;
(我用的oracle8i,用between 10 and 20不能查处记录,是怎么回事,也就是只要rownum不是从1
开始都查不出来,用上面的方法查出来的结果也不正确)
2 select * from tablename where rownum<20 minus
select * from tablename where rownum<10;
(查出来的结果数跟单独查第一个select语句和第二个select语句之差不相等)
究竟是怎么回事啊,该怎么写?哪位仁兄帮个忙,谢了先
...全文
256 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyr 2006-06-14
  • 打赏
  • 举报
回复
楼主讲的有道理,rownum本身就是一个伪列,所以要先order by排序.
ljhxuer 2006-06-13
  • 打赏
  • 举报
回复
select * from (select c_tsxx.*,rownum as my_rownum from ( select * from ghx.c_tsxx t order by t.regidate DESC ) c_tsxx where rownum<= 20 ) where my_rownum>=10;
qiekong 2006-06-12
  • 打赏
  • 举报
回复
是先生成所有rownum 然后才排序,所以你得到的结果不是你想要的结果 如果是用asc排序是正确的

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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