[转] 关于删除重复记录SQL

 

Oracle,最高效的删除重复记录方法 ( 因为使用了ROWID) ,ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.

DELETE FROM EMP E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM EMP X

WHERE X.EMP_NO = E.EMP_NO);

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

但最近有个公司出的面试题是,Access,一个表只有一列,如何删除重复行.

今天在讲解的时候提供了两种解决方法.

1、添加自动增长列。然后再按上面类似于Oracle的方法一样删除重复行,执行结束后再把自动增长列删除。

2、添加临时表,查询出目标行,删除原来的表记录,然后再批量插入。

insert into b

select c.name from

(SELECT t1.name

FROM a t1,a t2 where t1.name=t2.name

union

select t1.name from a t1 where name not in(select t2.name from a t2,a t3 where t2.name=t3.name)) c

DELETE FROM a

insert into a select b.name from b

你可能感兴趣的:(删除重复记录SQL)