如何在oracle数据库中查找最后一条插入的数据

select a.* from oa_sign a where a.createrid= '06e0d0d41878be50011878c083cd0006' and rownum=1 order by a.createtime desc
这样查就是不对

有以下几个方法,供您参考。

1、对于提交(最后一次操作commit了)的话可以查询那个提交段SELECT

列名1,列名2……FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;查出来的第一条就是最后改变的数据

2、如果表里面有序列或固定的排序字段可按倒排序后取第一条where rownum<2 order by 排序字段 desc

3、还有另外一种办法就是利用ORACLE伪列rowid

select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)

4、在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具。

这是几项常用的方法,希望我的回答能给您带来帮助。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-18
如果你的表有"插入时间"这样的字段,就找时间最大的记录
如果没有的话,就得查redo log了,在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具。追问

时间最大?怎么表示呢?

第2个回答  推荐于2018-03-07
表里面是否有序列?是否有固定的排序字段?
如果有就好办了。排序后取第一条

select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)

这样不知道是否可以。因为每次插入毕竟ID是不变的,而且递增本回答被提问者和网友采纳
第3个回答  推荐于2016-09-10
1、对于提交(最后一次操作commit了)的话可以查询那个提交段
SELECT 列名1,列名2……
FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where
VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;
查出来的第一条就是最后改变的数据
2、如果表里面有序列或固定的排序字段可按倒排序后取第一条
where rownum<2 order by 排序字段 desc
3、还有另外一种办法就是利用ORACLE伪列rowid
select * from tbl t1 where t1.rowid=(select max(rowid) from tbl t2)
4、在redo log中找到对应相关的表的插入语句,但是这样找到的是sql语句,而不是数据。查redo log得使用log miner工具
第4个回答  2011-07-18
倒序查第一个就行了呗

如何在oracle数据库中查找最后一条插入的数据?
1、对于提交(最后一次操作commit了)的话可以查询那个提交段SELECT 列名1,列名2??FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;查出来的第一条就是最后改变的数据 2、如果表里面有序列或固定的排序字段可按倒...

如何在oracle数据库中查找最后一条插入的数据
1、对于提交(最后一次操作commit了)的话可以查询那个提交段SELECT 列名1,列名2……FROM 表名 VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE where VERSIONS_STARTTIME IS NOT null ORDER BY VERSIONS_STARTTIME DESC;查出来的第一条就是最后改变的数据2、如果表里面有序列或固定的排序字段可按倒排序后取第一...

数据库中如何查询表的最后一条记录?
1、首先,创建一个测试,代码如下图所示,然后进入下一步。2、其次,完成上述步骤后,插入测试数据,代码如下图所示,然后进入下一步。3、接着,完成上述步骤后,查询表中的数据,代码如下图所示,然后进入下一步。4、最后,完成上述步骤后,重新排序,获取最后一条记录并转到bbb字段的长度,如下图所...

如何在ORACLE中筛选出所有人的最后一条记录?
用公式作为条件吧,=right(B2,1)="*"公式作为条件的条件区域:公式上方的空白单元格+写公式的这个单元格)B2是指你需要判断的标题名下方第一格单元格的位置。

怎么从oracle数据库取最近插入表里的5条数据,是最近5条,距离当前时间最 ...
1、如果是一张不停插入,但是不做修改的表,那么恭喜,碰到最简单的情况了,可以通过查找rowid最大的5条记录,就是。2、如果不是第一种情况那么,提供以下几种办法可以尝试:a、查找最近用过的sql,你可以通过v$sql视图以last_active_time为关键字查看。b、使用快照闪回查询。(成功可能不大,除非你...

怎么查询ORACLE表中的最后的10条数据
不太明白LZ的意思,数据库中记录的排列是无序的,用逆排序的方法可以对字段排序。楼上貌似是SQL Server的语法,Oracle可以用子查询。SELECT * FROM (SELECT * FROM TAB ORDER BY TNAME DESC)WHERE ROWNUM <= 10;

在ORACLE中如何查询最后插入的10条指定字段?
查询不了的 除非你自己加个时间字段记录 根据时间字段的大小才能查出来。不仅仅是Oracle,所有的关系型数据库都是这个原理。

如何将数据插入到oracle数据库中表的最后
insert into XXX values(xx,xx) 这是一般插入到最后,如果中间有空可能会插入空里 insert \/*+ append *\/ into XXX values(XX,xx) 这里使用了暗示(hint)append,肯定往表后插入,速度较快

oracle怎么取数据库最后200条记录
select from (select row_.*, rownum rownum_from (select * from table_name t) row_where rownum <= (select count(*) from table_name t))where rownum_ > (select (count(*) - 200) from table_name t)oracle rownum比较高效的查询方式 ...

在oracle数据库如何取得一个表最后两条记录
SELECT t.FROM (SELECT *, rownum rk from tab order by rk DESC) t WHEE rownum <= 2

相似回答