`
freshman0
  • 浏览: 9271 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle表关联删除重复记录

阅读更多

有两个表A、B,B为A的历史表,即A中的数据会隔段时间会转移到B中,要求A和B中的数据不能重复。但是现在存在几条记录,即在A中也在B中,要将重复的数据从A表中删除,id为A,B的主键,解决方法如下:

 

--查看两个表的重复记录

Select A.* from A , B where A.id=B.id

 

--A表中删除两个表的重复记录

 

Delete from A where exists (select 1 from B where A.id=B.id)

 

注:oracle是不支持delete _a from a _a, b _b where _a.id=_b.id这种类似关联用法的。

分享到:
评论

相关推荐

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    oracle学习及练习语句

    Oracle提供了`DISTINCT`关键字去除查询结果中的重复行,而在`删除重复记录sql.txt`中,你可能看到如何使用`GROUP BY`和`HAVING`结合`MIN/MAX`函数,或者`MERGE`语句来删除重复记录。`oracle-merge.txt`文件则介绍了...

    Oracle删除重复的数据,Oracle数据去重复

    - `DISTINCT`关键字可以用于查询结果集中去除重复行,但不适用于实际删除重复数据。 - 可以创建唯一索引,阻止新的重复数据插入。 - 使用`MERGE`语句结合`WITH`子句也可以处理重复数据问题,提供更灵活的策略。 ...

    ORACLE 优化sql语句提高oracle执行效率 .doc

    8. 删除重复记录:最高效的删除重复记录方法是使用 ROWID。 9. 用 TRUNCATE 替代 DELETE:当删除表中的记录时,在通常情况下,回滚段(rollback segments)用来存放可以被恢复的信息。如果你没有 COMMIT 事务,...

    oracle SQL优化技巧

    最高效的删除重复记录方法(因为使用了 ROWID)。例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); 9. 用 TRUNCATE 替代 DELETE 当删除表中的记录时,在...

    【oracle 表】

    7. **删除数据**:使用`DELETE`语句删除单条或多条记录: ```sql DELETE FROM Students WHERE ID = 1; ``` 8. **索引**:为了提高查询性能,可以为表的列创建索引。Oracle支持多种类型的索引,如B树索引、位图...

    oracle语句优化.docx

    UNION 操作符在进行表链接后会筛选掉重复的记录,因此在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。可以用 UNION ALL 操作符替代,因为 UNION ALL 操作只是简单的将两个结果合并后就返回。...

    oracle数据库优化大全(面试和学习都适用)

    Oracle 数据库优化的经验,涵盖了选择最有效率的表名顺序、WHERE 子句中的连接顺序、SELECT 子句中避免使用 ‘*‘、减少访问数据库的次数、使用 DECODE 函数来减少处理时间、整合简单、无关联的数据库访问、删除重复...

    初级程序员面试的oracle题目

    由于Oracle不支持直接删除重复记录,而保留第一行的方法,可以采用以下步骤: 1. 创建一个临时表`T_TEMP`,其中只包含每个`NAME`的第一条记录。 2. 删除表`T`中的所有记录。 3. 将`T_TEMP`中的数据重新插入到表`T`中...

    Oracle性能优化技巧

    7. **删除重复记录**:使用ROWID可以高效地删除重复记录,避免全表扫描。 8. **使用TRUNCATE替代DELETE**:对于整个表的清理,TRUNCATE命令比DELETE更快,因为它不涉及回滚段,资源消耗少。 9. **频繁使用COMMIT**...

    Oracle数据库SQL优化总结

    7. **删除重复记录**:使用ROWID进行删除,可以高效去除重复行。 8. **使用TRUNCATE替代DELETE**:TRUNCATE用于清空表,它比DELETE更高效,因为不涉及回滚信息,但请注意,TRUNCATE是DDL,不可恢复。 9. **频繁...

    Oracle Sql 性能优化技巧总结

    7. **删除重复记录**:使用ROWID删除重复记录的方法更高效,因为它可以直接定位到重复记录。 8. **用TRUNCATE替代DELETE**:TRUNCATE用于快速清空表,不涉及回滚操作,资源消耗低。但注意,TRUNCATE是DDL,不可回滚...

    Oracle经验技巧集(十年工作经历)

    删除重复记录时,应先使用SELECT语句定位到重复的记录,再使用DELETE语句进行删除,注意保留一条原始记录。 以上知识点展示了Oracle数据库管理中的一些实用技巧和常见问题的解决方案,对于提升数据库性能和维护有着...

    Oracle数据库笔记大全

    - **实体完整性约束**: 确保表中无重复记录,通常通过主键实现。 - **参照完整性约束**: 控制表间关联,如外键约束,防止无效引用。 5. **Oracle数据库实例与网络服务名**: - **数据库实例**: 运行在数据库文件...

    oracle 优化语句

    使用ROWID是一种高效的方法来删除重复记录。例如,可以使用以下SQL语句来删除重复记录: ```sql DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); ``` #### 八...

    Oracle 11g数据库学习笔记三

    ROWID伪列可以用来删除重复记录,例如删除部门表中的重复记录。 删除重复记录的步骤可以分为两步:首先,查询出所有的重复数据,可以使用以下语句: SELECT dname, loc, MIN(ROWID) FROM dept GROUP BY dname, loc...

    oracle查询效率

    7. **删除重复记录**:使用ROWID进行删除操作,如示例所示,可以高效地去除重复记录。 8. **用TRUNCATE替代DELETE**:当需要删除整张表时,TRUNCATE比DELETE更快,因为它不涉及回滚段,不支持撤销操作,因此资源...

    oracle 性能优化总结

    - 利用ROWID来高效地删除表中的重复记录。例如,可以通过比较行标识符(ROWID)来确定并删除重复的记录。 2. **使用TRUNCATE代替DELETE**: - TRUNCATE命令快速删除表中的所有记录,并且不会触发回滚机制。因此,...

    提高Oracle中SQL的执行效率

    使用ROWID来高效地删除重复记录。例如: ```sql DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); ``` #### 9. 用TRUNCATE代替DELETE 当删除表中的所有记录时...

    Oracle 常用SQL技巧经典收藏

    3. **删除重复记录**:删除重复记录时,一种高效的方式是通过ROWID比较。例如,删除ROWID较大的重复记录,只保留ROWID最小的一条。 4. **使用TRUNCATE替代DELETE**:当需要清空表时,使用TRUNCATE命令比DELETE更快...

Global site tag (gtag.js) - Google Analytics