sql去除重复记录

习sql有一段时间了,发现在我建了一个用来测试的表(没有建索引)中出 现了许多的重复记录。后来总结了一些删除重复记录的方法,在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值