鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 数据库 > mssql2005 > >

快速删除ORACLE重复记录

来源:互联网 作者:佚名 时间:2013-04-13 09:47
在Oracle中,可以通过唯一rowid实现删除重复记录;还可以建临时表来实现...这个只提到其中的几种简单实用的方法,希望可以和大家分享(以表employee为例)。 SQL desc employee Name Null? Type emp_id NUMBER(10) emp_name VARCHAR2(20) salary NUMBER(10,2

在Oracle中,可以通过唯一rowid实现删除重复记录;还可以建临时表来实现...这个只提到其中的几种简单实用的方法,希望可以和大家分享(以表employee为例)。

  SQL> desc employee

  Name Null? Type

  emp_id NUMBER(10)
  emp_name VARCHAR2(20)

  salary NUMBER(10,2)


  可以通过下面的语句查询重复的记录:
  SQL> select * from employee;

  EMP_ID EMP_NAME SALARY

  1 sunshine 10000

  1 sunshine 10000

  2 semon 20000

  2 semon 20000

  3 xyz 30000

  2 semon 20000

  SQL> select distinct * from employee;

  EMP_ID EMP_NAME SALARY

  1 sunshine 10000

  2 semon 20000

  3 xyz 30000

  SQL> select * from employee group by emp_id,emp_name,salary having count (*)>1

  EMP_ID EMP_NAME SALARY

  1 sunshine 10000

  2 semon 20000

  SQL> select * from employee e1 

  where rowid in (select max(rowid) from employe e2 
  where e1.emp_id=e2.emp_id and 

  e1.emp_name=e2.emp_name and e1.salary=e2.salary);


  EMP_ID EMP_NAME SALARY

  1 sunshine 10000

  3 xyz 30000

  2 semon 20000 


  2. 删除的几种方法:

  (1)通过建立临时表来实现

  SQL>create table temp_emp as (select distinct * from employee) 

  SQL> truncate table employee; (清空employee表的数据)

  SQL> insert into employee select * from temp_emp; (再将临时表里的内容插回来)

网友评论
<