SQL中如何删除重复数据

例如:

A B C D
1 张 李 刘 王

2 李 金 张 金

3 张 刘 李 王

4 金 李 张 刘

把这种情况变成,重复的姓氏只留一个 其余的全部删怎么弄?

我是新手 ,麻烦 说彻底详细些 试了很多方法都无效
语句也不会用,在哪输入也不知道。
请高人指点。

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;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-23
例如:记录虽然存在重复,但是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

补充一下,第二步做完,你的数据库里有一个temp1表,这个表其实就是你想要的表,你可以把原始表彻底删了,把这个表名字改下也行本回答被提问者采纳
第4个回答  2020-02-26

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

相似回答