oracle怎么查最后100行数据

luck5 2005-11-16 02:44:38
" from tablea where rownum<100"

这是取前100行,可如何取出最后的100行,
...全文
1166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ucme 2005-11-19
  • 打赏
  • 举报
回复
呵呵……有点好笑,原因?请看我解释:
首先我不清楚楼主想表达什么问题,到底是返回的数据的最后100条,还是表中的最后生成的100条记录??如果是前者,上面的就是答案了,如果是后者嘛,我想,上面的就不正确了。
ROWNUM是什么东西啊?ROWNUM是表里的数据没有任何关系,跟ROWID是两码事,我搞不懂为什么会想到用ROWNUM作为排序字段。ORACLE的SQL引擎接收到一条SQL语句的时候,会自动判断用何种计划来检索数据。SQL引擎如果发现所需要SELECT的字段里,没有任何字段建有INDEX的话,引擎会随机在“块”中读出数据(这个随机并不是我们平常说的,是有区别的,我就不加解释了)。在这种情况下,如果数据量很多的情况下,相同的SQL语句,返回的数据,是并不相同的(记录排序)。而ORACLE在返回数据的同时,会给每条记录,自动添加一个伪列,这个伪列就是ROWNUM了。我前面也说了,ROWNUM跟ROWID是完全不同的两回事,ROWID是在物理上标示块中的每条记录的,而对数据的增、删、改,就是靠ROWID来定位数据的。这就是为什么一般情况下,SELECT出来的记录集,是不能进行增、删、改的原因。
所以用ROWNUM来排序,同一条SQL,得到的数据,有可能不一样。如果这种情况,楼主可以接受的话,用ROWNUM来排序,是完全没问题的,但我认为是不是最后100条记录,就完全没意义了。
我建议在SELECT的时候,在SELECT里的某个合适的字段,做REVERSE INDEX就行了。你的情况,应该把记录的生成时间作为这个REVERSE INDEX字段。
luck5 2005-11-19
  • 打赏
  • 举报
回复
查询数据库表里的最后100条
skycncomp 2005-11-17
  • 打赏
  • 举报
回复
把二楼的再改一下
select a,b
from (select a,b,rownum from tablea order by rownum desc)
where rownum < 100 order by asc
就是正顺了
luck5 2005-11-17
  • 打赏
  • 举报
回复
着样取出来的数据是倒顺序显示的,
haode 2005-11-17
  • 打赏
  • 举报
回复
楼上说的对

select a,b
from (select a,b,rownum from tablea order by rownum desc)
where rownum < 100
jxdn_yang 2005-11-16
  • 打赏
  • 举报
回复
以rownum为倒序,再取前100

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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