如何去掉表中的重复记录
来源:互联网 发布:淘宝钱盾认证 编辑:程序博客网 时间:2024/05/18 05:03
在Oracle11g中实验成功!
第一种,数据全部重复,如下图:
需要得到以下的结果:
删除重复的记录(重复记录保留1条),可以按以下方法删除
方法一: create table tablea_bak as select distinct(a.*) from tableA a
然后drop以前那个表
最后rename tableA_bak to tableA
最好在不用这张表的时候。缺点:原表的注释将丢失。
方法二: delete from test where (id,name,ROWID) not in (select id,name,min(rowid) from test group by id.name;
id,name是test的字段,如果test有多个字段,要全部列出来。
方法三(推荐): delete from test q1 WHERE rowid > (select min(rowid) from test q2
where q1.id= q2.id and q1.name = q2.name group by id,name );
该方法效率高于方法二。
......
.....
......
***********************************************************************************************
第二种,数据部分字段重复,ID不重复 ,如下图:
需要得到以下结果:
下面的语句可以达到要求:
方法一: create table tablea_bak as select distinct(a.*) from tableA a
然后drop以前那个表
最后rename tableA_bak to tableA
最好在不用这张表的时候。缺点:原表的注释将丢失。
方法二(推荐):delete from tab_name a where rowid > (select min(rowid) from tab_name b where a.关键字 = b.关键字 group by 关键字)
此方法的执行顺序:先按 group by 关键字 分组,分完组后,按组执行delete;
此方法可以保留rowid最小的记录。
类推:保留rowid最大的记录 delete from tab_name a where rowid < (select max(rowid) from tab_name b where a.关键字 = b.关键字 group by 关键字)
方法三:delete from test where (name,ROWID) not in (select name,min(rowid) from test group by name)
name是test的重复字段,如果test有多个重复字段,要全部列出来。
......
.....
......
- 如何去掉表中的重复记录
- 使用一条语句去掉表中的重复记录
- 如何删除表中的重复记录?
- 如何删除表中的重复记录?
- 如何删除表中的重复记录?
- 如何找出表中的重复记录
- 如何去掉dataset中的重复行
- 如何去掉list中的重复数据
- 如何去掉String[]数组中的重复项
- 如何去掉重复的记录 返回多记录
- 如何去掉数据库重复记录并且只保留一条记录
- 如何去掉数据库重复记录并且只保留一条记录
- 如何去掉数据库重复记录并且只保留一条记录
- 去掉重复记录问题
- sql 去掉重复记录
- DISTINCT 去掉重复记录
- MySQL去掉重复记录
- sql去掉重复记录
- VC6远程调试
- 四个故事,四条值得大家认真思考的建议。
- 设置单文档应用程序的背景图片
- 扩展report service(实现单点登陆)
- SQL获取所有数据库名、表名、储存过程以及参数列表
- 如何去掉表中的重复记录
- 探讨PHP引用&符号的一些注意问题
- 大型数据库的设计原则与开发技巧
- 改变CListCtrl中Item的图片
- spring中配置定时器
- C++ typedef使用方法总结
- oracle10g dbconsole 重建步骤
- 开发版本控制
- system函数源码