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);
去掉重复数据,把没有重复的数据放在临时表#table中
select
distinct
*
into
#table
from
tablename
删除原数据
truncate
table
tablename
恢复数据
insert
into
tablename
select
*
from
#table
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
补充一下,第二步做完,你的数据库里有一个temp1表,这个表其实就是你想要的表,你可以把原始表彻底删了,把这个表名字改下也行
解决在excel电子表格中,如果混杂有重复数据,如何定位,如何删除的问题。