怎么样删除SQL SERVER 数据库中重复的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么样删除SQL SERVER 数据库中重复的数据相关的知识,希望对你有一定的参考价值。

我用的是EXCEL导入数据的 每次第二次导入的时候就会出现一些重复的数据
我想问怎么用SQL语句删除导入的重复的数据
表名: meter 里面有 userid userpassword address 你们举个例子吧 里面的字段比较多

1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete
from

where
aa
in
(select
aa
from

group
by
aa
having
count(aa)
>
1)
and
bb
not
in
(select
max(bb)
from

group
by
aa
having
count(aa)
>
1);
2、有多种写法:
delete
A
from
B
where
A.AA
=
B.AA
delete
A
from
A,B
where
A.AA
=
B.AA
delete
A
where
AA
in
(select
AA
from
B)
3、使用into关键字:
select
*
into
新表名
from
原表
4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):
select
substring(字段,1,3)
from
表名
参考技术A 重复记录如果是整条都重复
这么说 你的表没有主键?

请提供表名 各字段名

给你一个例子
可以直接执行的

--建表
create table school
(
names varchar(23),
adress int,
)
--插数据
insert into school values('this',2)
insert into school values('this',1)
insert into school values('this',1)
insert into school values('that',1)
insert into school values('that',1)
insert into school values('ha',1)
--显示所有记录
select * from school
--删除重复记录
with orders as
(select row_number()over(order by names)id,names,adress from school)
delete orders from
(select min(id)id,names,adress from orders group by names,adress having count(*)>1)
as del
where orders.names = del.names
and orders.adress=del.adress
and orders.id!=del.id本回答被提问者采纳
参考技术B 第一招、把不重复的数据导出到临时表
select distinct * into tmp from 原表;

第二招、删除原表数据
trunacte table 原表;

第三招、将原表数据导回
insert into 原表 select * from tmp;

第四招、删除临时表
drop table tmp;

打完收功。
参考技术C 加一列自动增长的id号吧,不然你以什么作为条件来删除?

找重复的数据:
select a,b,c,d...
from 表
group by a,b,c,d having (count(a)>1)

然后找出重复记录的id号
select id ,a,b,c,d..
where a=..and b=..and c=..and d=..

然后按id号删除

sqlserver 数据有重复怎么删除

参考技术A 1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete
from

where
aa
in
(select
aa
from

group
by
aa
having
count(aa)
>
1)
and
bb
not
in
(select
max(bb)
from

group
by
aa
having
count(aa)
>
1);
2、有多种写法:
delete
A
from
B
where
A.AA
=
B.AA
delete
A
from
A,B
where
A.AA
=
B.AA
delete
A
where
AA
in
(select
AA
from
B)
3、使用into关键字:
select
*
into
新表名
from
原表
4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):
select
substring(字段,1,3)
from
表名

以上是关于怎么样删除SQL SERVER 数据库中重复的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER怎么去掉重复数据?

sqlserver 数据有重复怎么删除

使用sql server 怎么查重复数据

sql server无法修改数据

高手请告诉我:在sql server中怎样按照指定的字段去重?

SQL SERVER 查询删除重复数据