数据库中去掉重复行的方法

MSSQL导入数据时,经常发现有重复行数据,以下是平时收集的一些重复行数据
—新建一个表
create table test
(a varchar(60),
b varchar(70))

insert into test(a,b)values
(‘a’,’b’),(‘a’,’c’),
(‘b’,’b’),(‘b’,’c’)
//批量插入多行数据


1 检测MSSQL 指定列是否存在重复行

例:我们检测列”a” 是否存在重复数据
select a from test
group by a
having COUNT(a)>1


2 清理MSSQL重复行

首先我们需要选择一个基准列(基准列:必须是一个不重复的列)
这里我们发现表test 没有一个”基准列”,
2.1 创建一个基准列

alter table test
add keyId int identity

现在我们就可以根据基准列,来删除列”a”重复的行了

delete from test
where keyId in
(
select MIN(keyId) from test
where a in
(
select a from test
group by a
having COUNT(a)>1
)
)
—————————-
删除语句执行的次数,等于里面重复的行数,我们可以采用一个while 循环来 重复执行这个删除操作。


清理MSSQL重复行 要点:
必须在 表中指定一个不重复的数据列