求大牛解析下:数据差异原因

hanks_gao 2013-07-22 01:40:42
各位大侠:
我想将table_A中的旧数据通过中间表table_middle的筛选,将符合条件的迁移到table_A_Backup中,并从table_A中删除,语句如下:

INSERT INTO table_A_Backup(
SELECT * FROM table_A src
WHERE EXISTS (SELECT 0 FROM table_middle md WHERE 1=1 AND src.column_a = md.column_a)
)
);

DELETE FROM table_A
WHERE EXISTS (SELECT 0 FROM table_middle md WHERE 1=1 AND src.column_a = md.column_a);

等执行完上面的SQL之后,再查询table_A中的数据笔数和table_A_backup中的数据笔数,发现他们两个的加总比总的资料笔数少了一些(假定table_A 的资料不再变化):
select count(0) from table_A;
select count(0) from table_A_Backup;

请各位大侠帮忙分析下是什么原因导致这样的数据差异?
非常感谢!

...全文
125 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hanks_gao 2013-07-25
引用 3 楼 renkuan719 的回复:
先查询出要插入的结果,插入一条记录,同时删除这条记录。。。
感谢回复,不过不是我想要的答案!
  • 打赏
  • 举报
回复
shy315 2013-07-23
SELECT count(*) FROM table_A src
        WHERE EXISTS (SELECT 0 FROM table_middle md WHERE 1=1 AND src.column_a = md.column_a)
    )
用几个count(*)确认记录数是否一致
  • 打赏
  • 举报
回复
先查询出要插入的结果,插入一条记录,同时删除这条记录。。。
  • 打赏
  • 举报
回复
hanks_gao 2013-07-23
有做这方面的检查,我用SQL%ROWCOUNT记录insert的数量,然后在Delete之前计算要Delete的数量,如果不匹配,就Rollback,但是结果还是有差异,不知道什么原因!请大家给出一些认为可能会出问题的点在哪里?感谢了!!!
  • 打赏
  • 举报
回复
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-07-22 01:40
社区公告
暂无公告