oracle 删除重复记录的高效方法 && mysql 删除重复记录方法
2009年02月12日 星期四 16:45
COL1中有重复记录(COL1,COL2为主键),如何删除 1、有少数重复记录(在col1,col2上有索引比较好) DELETE T WHERE (COL1,COL2) IN (SELECT COL1,COL2 FROM T GROUP BY COL1,COL2 HAVING COUNT(*) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2 HAVING COUNT(*) > 1) 2、大部份记录有重复记录 DELETE T WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2) 3、其他写法 DELETE T WHERE ROWID IN (SELECT A.ROWID FROM T A,T B WHERE A.COL1=B.COL1 AND A.COL2 = B.COL2 AND A.ROWID > B.ROWID) ###################################### 10. 删除重复记录 最高效的删除重复记录方法 ( 因为使用了ROWID) DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); 11. 用TRUNCATE替代DELETE 当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是 恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML) 12. 尽量多使用COMMIT 只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少: COMMIT所释放的资源: a. 回滚段上用于恢复数据的信息. b. 被程序语句获得的锁 c. redo log buffer 中的空间 d. ORACLE为管理上述3种资源中的内部花费
mysql 删除重复记录
如果数据库的设计不规范,某个表没有主健,那么肯定会有重复记录的现象,或者存在这种危险。在oracle中,可以通过rowid来删除重复记录,而mysql如何实现呢: 1、准备基表test,待测试。 create table test (c1 smallint,c2 smallint); insert into test values(1,1); insert into test values(1,1); insert into test values(1,2); insert into test values(2,2); insert into test values(2,2); 2、创建一个临时表,结构与原表一致,但没有数据。 create table tmp as select * from test where 1=2; 3、将原表数据插入临时表,重复记录合为一条记录。 insert into tmp select distinct * from test; 4、查看一下基表和临时表的数据。 mysql> select * from test; +------+------+ | c1 | c2 | +------+------+ | 1 | 1 | | 1 | 1 | | 1 | 2 | | 2 | 2 | | 2 | 2 | +------+------+ 5 rows in set (0.00 sec) mysql> select * from tmp; +------+------+ | c1 | c2 | +------+------+ | 1 | 1 | | 1 | 2 | | 2 | 2 | +------+------+ 3 rows in set (0.00 sec) 5、删除基表数据 mysql> delete from test; Query OK, 5 rows affected (0.02 sec) 6、将临时表数据插回基表 mysql> insert into test select * from tmp; Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0 7、查看一下基表的数据 mysql> select * from test; +------+------+ | c1 | c2 | +------+------+ | 1 | 1 | | 1 | 2 | | 2 | 2 | +------+------+ 3 rows in set (0.00 sec) 8、数据准确,完成基表重复记录的删除。 方法二: INSERT INTO "tables1" SELECT name,id FROM "tables" GROUP BY name 借用一个中间表~ 把不复的数据先复制到中间表,再将原表删除,并且将中间表修名成现有表~ 不过INSERT INTO 表 SELECT 这种语法适合mysql4.0以上版本 方法三:(本人经常使用的,特别表大的情况,此法算是效率比较高的了) 新建一个临时表 create table tmp as select * from youtable group by name 删除原来的表 drop table youtable 重命名表 alter table tmp rename youtable
|
分享到:
相关推荐
注意,Oracle的`ROWID`是行的物理地址,可以高效地标识并删除重复记录。在MySQL和SQL Server中,由于没有内置的`ROWID`机制,需要借助额外的`autoID`字段来实现。 总结来说,处理数据库中的重复记录是数据管理的...
BaseDao是数据访问层的一个基础类,通常包含通用的CRUD(创建、读取、更新、删除)方法,以减少重复代码。例如,BaseDao可能有一个executeSQL方法,接受SQL语句和参数,然后使用PreparedStatement执行。 测试部分,...
在SQL数据库管理中,查找和删除重复数据是一项常见的任务,尤其在大数据量的环境中,保持数据的一致性和准确性至...在实际操作中,应根据具体数据库类型(如MySQL、SQL Server、Oracle等)和数据量大小选择合适的方法。
本资源提供了一个C#编写的MySQL数据库操作类,包含了MySql.Data.Dll库,这使得开发者可以方便地进行数据库查询、插入、更新和删除等操作。这个类库集成了大约二三十个常用的方法,覆盖了数据库操作的基础功能。 ...
如果发现重复,可以使用TDataSet的Delete方法删除重复记录,或者将它们标记出来供后续处理。 6. **数据校验和清理**:在处理完重复数据后,记得更新到数据库中,可以使用TDataSet的ApplyUpdates方法将更改提交到...
MySQL数据库是全球最受欢迎的开源关系型数据库管理系统之一,它以其高效、可靠和易于维护的特点,在Web开发、企业级应用和数据分析等领域广泛应用。本课件PPT涵盖了MySQL的基础知识到高级特性的深入理解,旨在帮助...
1. DBMS(数据库管理系统):是用于创建、操作和管理数据库的软件,如MySQL、Oracle、SQL Server等。 2. DB(数据库):是通过DBMS存储和管理的一系列有组织的数据集合。 3. SQL:是用于与数据库进行交互的标准化...
- **问题描述**:如果一张表中有ID自增主键,在插入17条记录后删除了最后三条记录(即第15、16、17条),然后重启MySQL服务,再次插入一条记录时,该记录的ID会是18还是15? - **知识点**:MySQL的自增主键(AUTO_...
- 删除记录并重启MySQL后,插入新记录的ID将是18,因为自增ID不会回退。 7. CHAR_LENGTH与LENGTH的区别: - CHAR_LENGTH计算字符数,不考虑字符编码。 - LENGTH计算字节数,受字符编码影响,例如在Unicode中会有...
`,通过`where`子句设置查询条件,`as`用于给字段设置别名,`distinct`用于去除重复记录。 总的来说,MySQL的基础知识涵盖了数据库的基本概念、分类、常用操作以及表和记录的管理。掌握这些知识对于数据库的日常...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,以其高效、可靠和易用性著称。以下是针对提供的文件内容中涉及的一些MySQL知识点的详细解释: 1. **自增主键**:自增主键是一种特殊类型的列,通常用于标识表中...
例如,省份信息只在`provinces`表中出现一次,而不是在每个城市或区县记录中重复。通过外键约束,可以确保数据的完整性和一致性。 在实际应用中,这样的数据库可以用于多种用途,如: 1. 地图服务:为用户提供地理...
它由瑞典的MySQL AB公司开发,现在归Oracle公司所有。MySQL以其高效、稳定和易用性著称,是初学者和专业人士理想的数据库工具。 关系型数据库管理系统(RDBMS)如MySQL,基于关系理论,将数据组织成表格形式,每个...
10. 剔重SQL的讨论:剔除重复数据的SQL查询在数据清洗和维护中非常常见,通过特定的SQL语句或存储过程可以有效剔除重复记录。 11. 网易数据库笔试题:网易作为国内知名的互联网公司,其笔试题常考察应聘者数据库...
5. **MySQL相对于Oracle的优势**:MySQL开源、免费,更便携,有图形界面管理工具,如MySQL Query Browser。 6. **FLOAT与DOUBLE的区别**:FLOAT存储8位精度,4字节;DOUBLE存储18位精度,8字节。 7. **CHAR_LENGTH...
MySQL 5.7是Oracle公司推出的数据库管理系统的一个重要版本,其文档是理解、学习和使用这一版本的关键资源。这份"mysql5.7文档英文版-html格式.zip"包含了MySQL 5.7的完整说明,以HTML格式呈现,方便用户离线查阅和...
1. SQL基础:如SELECT语句用于查询数据,INSERT用于插入记录,UPDATE用于更新现有数据,DELETE用于删除记录。 2. 数据类型:了解各种数据类型,如INT、VARCHAR、DATE等,以及何时使用它们。 3. 表设计:理解数据库...
SUN在高性能计算领域有着显著的优势,这为Oracle提供了一个强大的平台,以支持大规模数据库的高效运行。 - **Oracle Fusion Middleware与Java**:Oracle的中间件产品Fusion Middleware基于Java技术,这不仅确保了其...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它由瑞典MySQL AB公司开发,后被Oracle公司收购。MySQL以其高效、稳定、易用和免费(对于大多数商业用途)的特点,成为了互联网上许多网站和应用的首选...
它包括数据查询、数据更新、数据插入和数据删除等功能,适用于各种数据库系统,如MySQL、Oracle和SQL Server等。 在数据库方面,MySQL是一个开源的DBMS,提供高效、可靠且易于使用的数据库服务。数据库是一个存储...