遇到某表sys_param_value数据没有主键,好多数据重复,重复的是整条记录都一样。开始一条一条删除,但是发现太费事,一万多条数据。后来百度下有没有快捷方法,发现还真有。参照冷月宫主的完全去重方法(http://blog.youkuaiyun.com/e_wsq/article/details/41009785):
自己的具体实现过程:
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,找到了重复的记录,还好只有几条。直接在数据库表里删除。若数据量大,可以参照冷月宫主的博客里提供的部分重复的方法。