Oracle排序分页的SQL语句问题

steven_cheng 2002-08-22 11:24:21
我在用Oracle数据库的时候需要分页显示,最后生成的SQL语句(第二页):
select * from (select TableA.*,rownum as rowno from TableA order by CreateTime desc) where rowno>='11' and rowno<='20'
发现一个问题,页面内是排序的,但是,整个查找结果集并没有按照我的意思排序。也就是说,如果我插入一条新纪录,并没有在第一页出现。而是在最后一页第一条纪录出现。不知道各位是怎样解决Oracle的排序分页问题的?请高手指点。另外,对于Oracle的伪列rownum是怎样的机制,也请高手指点。
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oceanboywjk 2002-08-22
  • 打赏
  • 举报
回复
Patrick_DK说的对
oceanboywjk 2002-08-22
  • 打赏
  • 举报
回复
你的SQL语句写错了,应该这样
select * from (select TableA.*,rownum as rowno from TableA order by CreateTime desc) where rowno<='20' and rowno<='11'
原因请上网查询rownum的定义
Patrick_DK 2002-08-22
  • 打赏
  • 举报
回复
ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能
用ROWNUM<100, 不能用ROWNUM>80。
  以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):
  语句一:
  SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT
ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND
NUMROW < 100 ) ORDER BY 条件3;
 
  语句二:
  SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM
TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;


----------------------------------------------------------------
原贴内容:
Oracle里取一段数据给个例子我看看

rownum什么的我还没有用过
编号: 555 发送者 xmvigour 发送时间 2002-8-19 11:25:25 删除 回复
内容 返回第5—9条纪录,按月份排序
SQL> select * from (select rownum row_id ,month,sell
2 from (select month,sell from sale group by month,sell))
3 where row_id between 5 and 9;
如何用rownum实现大于、小于逻辑?(返回rownum在4—10之间的数据)(minus操作,速度会受影响)
SQL> select rownum,month,sell from sale where rownum<10
2 minus
3 select rownum,month,sell from sale where rownum<5;



62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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