SQL Server数据库:有时候在处理数据时会遇到不加主键的表,导致数据表内出现了一模一样的数据,刚开始第一时间想到的方式是,把两条数据全部删除,然后再插入一条,但是这种可能数据量比较少的话,还可以,没有那么麻烦,一旦出现大量的数据需要处理,就有点浪费时间了,后来又想到了下面这种方式,个人觉得还不错,今天就简单介绍下这个如何在数据表内删除所有字段都相同的重复数据。
首先创建一个临时表并插入一些数据,用于模拟该场景。
--创建一个#temp的临时表
create table #temp
(
ID int not null,
Name varchar(20) null
)
--在临时表内插入测试数据
insert into #temp(ID,Name) values("1","测试");
insert into #temp(ID,Name) values("1","测试");
insert into #temp(ID,Name) values("2","测试2");
insert into #temp(ID,Name) values("2","测试");
insert into #temp(ID,Name) values("3","测试");
测试表结果查询
select * from #temp
ID | Name |
1 | 测试 |
1 | 测试 |
2 | 测试2 |
2 | 测试 |
3 | 测试 |
去重并删除重复数据SQL语句:
--查询去重并删除重复数据
with TEST as
(
select ID,Name,row_number() over(partition by ID,Name order by ID) RowNum
from #temp
)
delete from TEST where RowNum > 1
--查询去重后的数据
select * from #temp
ID | Name |
1 | 测试 |
2 | 测试2 |
2 | 测试 |
3 | 测试 |
测试到此结束,记得最后再把测试用的临时表删除!!!
DROP TABLE #temp