Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 删除指定字段重复的记录

  1. SQL> select * from t;  
  2.   
  3.         ID NAME            SCORE  
  4. ---------- ---------- ----------   
  5.          3 smith             100  
  6.          4 smith             100  
  7.          5 jerry              80  
  8.          6 tom                80  
  9.          1 evan              100  
  10.          2 evan              100  
  11.          7 evan              100  
  12.   
  13. 已选择7行。  
  14.   
  15. SQL> ed tmp.buf  
  16.   
  17. SQL> --获取所有的记录,但name与score两者不能重复   
  18. SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的id   
  19. SQL> select min(id) id,name,score from t group by name,score;  
  20.   
  21.         ID NAME            SCORE  
  22. ---------- ---------- ----------   
  23.          6 tom                80  
  24.          3 smith             100  
  25.          1 evan              100  
  26.          5 jerry              80  
  27.   
  28. SQL> ed tmp.buf  
  29.   
  30. SQL> --获取有重复记录的数据(有重复说明分组后count(*)>1),并且其id最小的记录   
  31. SQL> --哪些字段相同,以哪些字段分组,然后获取其最小的id   
  32. SQL> select min(id) id,name,score from t group by name,score having count(*) > 1;  
  33.   
  34.         ID NAME            SCORE  
  35. ---------- ---------- ----------   
  36.          3 smith             100  
  37.          1 evan              100  
  38.   
  39. SQL> ed tmp.buf  
  40.   
  41. SQL> --删除那些name与score重复的记录,只保留id最小的那一条   
  42. SQL> DELETE FROM t  
  43.   2   WHERE t.ID NOT IN (SELECT MIN(id) AS id FROM t GROUP BY NAME, score);  
  44.   
  45. 已删除3行。  
  46.   
  47. SQL> select * from t;  
  48.   
  49.         ID NAME            SCORE  
  50. ---------- ---------- ----------   
  51.          3 smith             100  
  52.          5 jerry              80  
  53.          6 tom                80  
  54.          1 evan              100  
此外还可以使用临时表的方式,即将我们需要的数据(没有重复的数据)先放到临时表中,然后删除正式表中的数据,最后将临时表中的数据插入到正式表中。但是效率如何我还不知道哩,没有测试哩!Oracle 内存管理PGAOracle 全???检索相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数