删除a表中和b表相同的数据

删除a表中和b表相同的数据

软件环境:

1、Windows NT4.0+ORACLE 8.0.4

2、ORACLE安装路径为:C:\ORANT

问题提出:

1、在做数据转储业务的时候,如果发生操作错误,有可能出现主表和副表中都有同一种数据,

这样结算的结果就有可能发生错误。

实现方法:

SQL> create table a (

2 bm char(4), --编码

3 mc varchar2(20) --名称

4 )

5 /

表已建立.

SQL> insert into a values(’1111’,’1111’);

SQL> insert into a values(’1112’,’1111’);

SQL> insert into a values(’1113’,’1111’);

SQL> insert into a values(’1114’,’1111’);

SQL> insert into a values(’1115’,’1111’);

SQL> create table b as select * from a where 1=2;

表已建立.

SQL> insert into b values(’1111’,’1111’);

SQL> insert into b values(’1112’,’1111’);

SQL> insert into b values(’1113’,’1111’);

SQL> insert into b values(’1114’,’1111’);

SQL> commit;

完全提交.

SQL> select * from a;

BM MC

---- --------------------

1111 1111

1112 1111

1113 1111

1114 1111

1115 1111

SQL> select * from b;

BM MC

---- --------------------

1111 1111

1112 1111

1113 1111

1114 1111

方法一:exists子句

SQL> delete from a where exists (select ’X’ from b where a.bm=b.bm and a.mc=b.mc);

删除4个记录.

where条件:如果两个表中都拥有相同字段的主键(primary key),则只需比较两个主键就可以了

方法二:in子句

SQL> delete from a where (bm,mc) in (select bm,mc from b);

删除4个记录.

SQL> select * from a;

BM MC

---- --------------------

1115 1111

实际测试结论:

在表不是很大时,用in子句速度还可以忍受,而如果记录量很多时(十万条以上),in子句简直让人难以人忍受,速度奇慢。

a表剔除b表 oracle,删除a表中和b表相同的数据相关推荐

  1. [原]Oracle删除大表并回收空间的过程

    近日在查询某项日志的时候,发现查询非常缓慢,根据以往的经验这是由于某个日志表过大引起的,为了加快查询,决定将大部分的历史数据迁移到另外一个表中,本文主要记录删除这个大表的过程,就解决问题而言还有很多方 ...

  2. spark写表指定外部表_Spark SQL 之自定义删除外部表

    Spark SQL 之自定义删除外部表 前言 Spark SQL 在删除外部表时, 本不能删除外部表的数据的. 本篇文章主要介绍如何修改 Spark SQL 源码实现在删除外部表的时候, 可以带额外选 ...

  3. oracle的删除的row如何,Oracle 删除大表中部分数据

    需求: 项目中有一张表大概有7000多万条数据,造成表空间已满,需要清理部分数据,打算清理3000万. 2B 做法: delete from table_name where ID > '400 ...

  4. shell脚本执行oracle删除表,shell脚本操作oracle删除表空间、创建表空间、删除用户...

    oracle下表空间的导出,用户的删除,表空间删除,用户新建,表空间新建,数据导入的shell 使用非oracle用户执行该脚本 参数说名 $1:base表空间的用户名 $2:同步表空间的用户名 使用 ...

  5. oracle删除一张表的sql语句,oracle删除表的语句

    oracle删除一个用户下的表的sql语句是什么啊 删除用户所有表declarecursor c1 is select table_name from dba_tables where owner=' ...

  6. oracle删除表并释放空间,oracle删除(释放)数据文件/表空间流程

    1)批量将niptest表空间中的表move到USERS表空间,再删除表空间niptest首先看下此表空间内的表move到其他表空间防止数据丢失 select * from dba_tables wh ...

  7. oracle删除users表空间

    1.users表空间一般情况下是默认的,需将别的空间设置成默认,再删除users表空间(oracle不允许删除默认空间的). 2.删除表空间的同时会报这样的错:ORA-22868错误.原因:推断应该存 ...

  8. oracle删除大表的数据的方法

    今天在公司中碰到访问表数据(test 表)速度非常慢,简单的一个select 语句花了10多分钟, 后来查询一下表的数据量,一共有278万多条数据,而且这个数据表的数据大都过期了,对于现在的业务没什么 ...

  9. linux误删表空间文件,不小心删除了表空间数据文件   如何处理

    问题描述:将先创建好的数据库的表空间文件(dbf文件)直接删除掉(正确删除表空间的办法是用drop命令).后来,重新创建数据库表空间时,提示表空间已存在,但又由于dbf文件损坏,也无法用drop命令来 ...

最新文章

  1. 2019年我只想明白了这5点
  2. Shiro中的Remember me设置
  3. elasticsearch 查询模板
  4. pytorch基础知识整理(四) 模型
  5. Python多篇新闻自动采集
  6. admin- 源码解析(流程)
  7. 好好把握人生的12种财富
  8. 微服务面试题及详细答案
  9. 学习基于springboot的java分布式中间件-Redis(3) redis之缓存穿透等典型问题
  10. 高通 锁定DDR频率
  11. 在launcher中隐藏app图标
  12. 【Java】解决 java:错误:编码GBK的不可映射字符
  13. 苹果 AirPods 或改用 USB-C 接口,AirPods 最有用的功能就是Find My
  14. vue使用html2canvas截取div内容生成海报~ vue生成海报
  15. 2015年中国数据库技术大会(DTCC)PPT合集
  16. 机器学习中的无监督学习是什么?
  17. Git 切换分支的命令
  18. 神经网络训练失败原因总结
  19. 为什么计算机没有无线网络,为什么没有无线路由器的计算机上没有宽带连接?...
  20. 九天毕昇”云平台:python3.7+CUDA10.1+torch1.6.0+spconcv1.2.1安装OpenPCDet全流程

热门文章

  1. switch(封装)
  2. HoughLine变换
  3. nodejs MVC
  4. 大型网站架构设计系列总结
  5. 用SQL Server 监控 OS Server 的Task Management信息
  6. Thrift介绍与应用(三)—hbase的thrift接口
  7. thrift介绍及应用(二)—简单应用
  8. 简简单单的代码让你轻松学会 动态代理
  9. 1.Dao代码如何编写?
  10. [转载] Java中的final变量、final方法和final类