SQL中如何删除重复数据

2024-12-30 03:44:58
推荐回答(5个)
回答1:

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;

回答2:

例如:记录虽然存在重复,但是rowid是唯一的,所以在子查询取得重复行中最小的rowid,删除重复行中
大于最小的rowid的行,只是保留了最小rowid的行,就是删除了重复行。
这个语句如果要调优的话,可以在内部查询中建索引
delete
from
ttt
a
where
rowid>(select
min(rowid)
from
ttt
b
where
a.name=b.name);

回答3:

去掉重复数据,把没有重复的数据放在临时表#table中
select
distinct
*
into
#table
from
tablename
删除原数据
truncate
table
tablename
恢复数据
insert
into
tablename
select
*
from
#table

回答4:

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表,这个表其实就是你想要的表,你可以把原始表彻底删了,把这个表名字改下也行

回答5:

解决在excel电子表格中,如果混杂有重复数据,如何定位,如何删除的问题。