如何删除刚刚插入表的那几行数据

悬崖跳舞被人砍 2014-11-27 10:02:26
好比,我昨天向表里插入了100行,今天过来才知道插错了。那么我想删除这100行,没有第二个表可以做连表查询,那么该怎么删除昨天插入的这100行数据呢?我曾经用rownum来删,假设该表现有1500行,我曾经的代码如下:
delete tb1
where rowid in (select rowid from (select rownum as rm,rowid from tb1) where rm > 1400)

但是现在发现,rownum的大小与插入数据的先后可能并不是一一对应的关系。不知道大家能理解不,上一张图
我是按照时间先后插入数据的 ,但是在查询时明显看到11.26号的数据出现在11.25号的数据上面,也就是说rownum并不能真实反映数据插入的先后顺序。那我的问题就来了,该怎么删除最后插入表的100行数据呢?
...全文
467 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
空心兜兜 2014-11-28
  • 打赏
  • 举报
回复
……不用日志应该不行
sych888 2014-11-28
  • 打赏
  • 举报
回复
日志挖掘...........................
sych888 2014-11-28
  • 打赏
  • 举报
回复
楼主用发的ROWNUM很危险,谨慎处理 可以考虑从其他相关点进行处理:如操作时间
  • 打赏
  • 举报
回复
引用 6 楼 bw555 的回复:
先用1#的方法找到这些记录,确认是否是这些记录,然后利用下面语句删除
delete from tb1
where rowid in (select rowid from tb1
minus
select rowid from  tb1 as of  timestamp to_timestamp('2007-05-12 13:22:33', 'YYYY-MM-DD HH24:MI:SS'))
嗯,好的~
bw555 2014-11-27
  • 打赏
  • 举报
回复
先用1#的方法找到这些记录,确认是否是这些记录,然后利用下面语句删除
delete from tb1
where rowid in (select rowid from tb1
minus
select rowid from  tb1 as of  timestamp to_timestamp('2007-05-12 13:22:33', 'YYYY-MM-DD HH24:MI:SS'))
  • 打赏
  • 举报
回复
忘了讲了,真正要操作的表中没有operdate这列,也没有自增长的列,所以从这两方面入手是不可以的~
不写代码的钦 2014-11-27
  • 打赏
  • 举报
回复
有没有插入时间判断,没有很难准确删除。 特别是有删除数据情况。
小灰狼W 2014-11-27
  • 打赏
  • 举报
回复
那么问题来了…… 如果数据是按operdate顺序插入的 可以delete from xxx t1 where (select count(1) from xxx t2 where t2.operdate>t1.operdate)<100 或者如果undo没被覆盖 delete from xxx t1 where t1.rowid not in (select t2.rowid from xxx as of timestamp to_date('2014-11-25 12:00','YYYY-MM-DD HH24:MI') t2) 把时间改成合适的值,会将后来插入的数据删掉 用flashback table xxx to timestamp to_date(xxx,xxx);也行,但是要小心数据丢失
卖水果的net 2014-11-27
  • 打赏
  • 举报
回复


-- 如果 operdate 是你的插入日期, 可以用下面的方法删除 。
-- 之前最好 select 一下,使用同样的条件 。
delete tb1 
where operdate between to_date('2014-11-26 00:00:00,''yyyy-mm-dd hh24:mi:ss) 
 and to_date('2014-11-26 23:59:59,''yyyy-mm-dd hh24:mi:ss) 

bw555 2014-11-27
  • 打赏
  • 举报
回复
试试闪回查询,用现在表中的数据minus闪回查询的数据,差值就是你想查的数据
select * from tb1
minus
select * from  tb1 as of  timestamp to_timestamp('2007-05-12 13:22:33', 'YYYY-MM-DD HH24:MI:SS')
--时间自行调整

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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