社区
Java EE
帖子详情
oracle怎么查最后100行数据
luck5
2005-11-16 02:44:38
" from tablea where rownum<100"
这是取前100行,可如何取出最后的100行,
...全文
1166
6
打赏
收藏
oracle怎么查最后100行数据
" from tablea where rownum<100" 这是取前100行,可如何取出最后的100行,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
oracle
查
询最新
100
条
数据
查
询速度还可以 select * from (select * from fbcn_service order by service_id desc) where rownum < 101
oracle
倒序取
100
条
数据
oracle
倒叙取
100
条
数据
oracle
查
询后
100
条
数据
库,
Oracle
-
查
询近来跟新的
数据
,
查
询前
100
条,rownum 用法
查
询最近2小时跟新的记录Select * From book Where update_time > sysdate-2/24sysdate+(5/24/60/60) 在系统时间基础上延迟5秒sysdate-(5/24/60/60) 在系统时间基础上减去5秒sysdate+5/24/60 在系统时间基础上延迟5分钟sysdate-5/24/60 在系统时间基础上减去5分钟sysdate+...
oracle
查
询前一
行
或后一
行
数据
oracle
可以使用 lead、lag 函数来
查
询已有记录的下一条、上一条记录。 表结构如下: 如要
查
询Staffno是6-1102的前一条记录: [sql] view plain copy select * from staff where staff_no=(select c.p from (sele
Oracle
查
最后
一条记录
今天遇到一个坑,使用
Oracle
查
表的
最后
一条创建的记录。 路思 1:根据时间倒序排序。 2:
查
出第一条记录。 然后写出: select * from t_qms_bu_check_plan_flow where rownum= 1 order by CREATED_DATE DESC ; 实际上是错的。 原因:rownum 在排序之前生效。也就是说执
行
的顺序是这样的: 1:
查
出第一条
数据
。 2:排序。 傻眼了。。 正确的姿势应该是这样的。 select * from ( select * from t
Java EE
67,512
社区成员
225,885
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章