您的位置:首页 > 数据库 > Oracle

Oracle数据库中重复数据删除方法:完全去重

2015-06-25 14:25 603 查看
遇到某表sys_param_value数据没有主键,好多数据重复,重复的是整条记录都一样。开始一条一条删除,但是发现太费事,一万多条数据。后来百度下有没有快捷方法,发现还真有。参照冷月宫主的完全去重方法(/article/2952137.html):

自己的具体实现过程:

CREATE TABLE SYS_PARAM_VALUE_COPY AS (SELECT DISTINCT * FROM SYS_PARAM_VALUE);---创建临时表,并把DISTINCT 去重后的数据插入到临时表中。

TRUNCATE TABLE SYS_PARAM_VALUE --清空原表数据

INSERT INTO SYS_PARAM_VALUE(SELECT * FROM SYS_PARAM_VALUE_COPY );--临时表数据插入原表

DROP TABLE SYS_PARAM_VALUE_COPY ;--删除临时表

但是我在TRUNCATE TABLE SYS_PARAM_VALUE --清空原表数据这步清空原表后,给表SYS_PARAM_VALUE 设了主键和唯一性约束键后,

INSERT INTO SYS_PARAM_VALUE(SELECT * FROM SYS_PARAM_VALUE_COPY ;这句执行报违反 唯一性约束。经过一番研究发现,里面还有部分重复,用此句找到重复的记录:select 字段1,字段2,count(*) from 表名 groupby 字段1,字段2 havingcount(*) > 1,找到了重复的记录,还好只有几条。直接在数据库表里删除。若数据量大,可以参照冷月宫主的博客里提供的部分重复的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: