select 字段1,字段2,字段3 from table group by 字段1,字段2,字段3 having count(*)>1 用上边这句能找出所有重复的数据 字段1,2,3你替换成你表里的字段名,如果有更多字段的话,你就继续添加,最后group by的时候不要忘记了 删除的时候要建立一个临时表 create table new_table as select 字段1,字段2,字段3 from old_table group by 字段1,字段2,字段3; 然后删除原表数据 truncate table old_table; 然后把临时表数据反插回去 insert into new_table select * from old_table;
例如:记录虽然存在重复,但是rowid是唯一的,所以在子查询取得重复行中最小的rowid,删除重复行中 大于最小的rowid的行,只是保留了最小rowid的行,就是删除了重复行。 这个语句如果要调优的话,可以在内部查询中建索引 delete from ttt a where rowid>(select min(rowid) from ttt b where a.name=b.name);
第2个回答 2019-10-15
去掉重复数据,把没有重复的数据放在临时表#table中 select distinct * into #table from tablename 删除原数据 truncate table tablename 恢复数据 insert into tablename select * from #table
第3个回答 2009-09-24
1.把重复记录放到临时表: select A,B,C,D into temp1 from [表名] group by A,B,C,D having count(*)>1 2.将不重复的记录记入temp1表: insert temp1 select A,B,C,D from [表名] group by A,B,C,D having count(*)=1 3.如果确定临时表里的记录没错,删了原始表,将 临时表里的数据insert到原始表 insert [表名] select * from temp1