SQL中如何删除重复数据
例如:ABCD1张李刘王2李金张金3张刘李王4金李张刘把这种情况变成,重复的姓氏只留一个其余的全部删怎么弄?我是新手,麻烦说彻底详细些试了很多方法都无效语句也不会用,在哪...
例如:
A B C D
1 张 李 刘 王
2 李 金 张 金
3 张 刘 李 王
4 金 李 张 刘
把这种情况变成,重复的姓氏只留一个 其余的全部删怎么弄?
我是新手 ,麻烦 说彻底详细些 试了很多方法都无效
语句也不会用,在哪输入也不知道。
请高人指点。 展开
A B C D
1 张 李 刘 王
2 李 金 张 金
3 张 刘 李 王
4 金 李 张 刘
把这种情况变成,重复的姓氏只留一个 其余的全部删怎么弄?
我是新手 ,麻烦 说彻底详细些 试了很多方法都无效
语句也不会用,在哪输入也不知道。
请高人指点。 展开
10个回答
展开全部
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,字段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);
大于最小的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
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表,这个表其实就是你想要的表,你可以把原始表彻底删了,把这个表名字改下也行
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电子表格中,如果混杂有重复数据,如何定位,如何删除的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询