SQL Server 2008删除重复记录方法总结

作者:袖梨 2022-06-29

方法一,

这是一种初级的删除重复记录的方法,我们利用distinct取唯一数据存到一个表。

 代码如下 复制代码

select distinct * into #tmp from tablename

然后删除原来的表

 代码如下 复制代码

drop table tablename

再创建一个与原来表一样名字,然后利用select  into 把tmp表存入以前的表。

 代码如下 复制代码

select * into tablename from #tmp

最后删除旧表

 代码如下 复制代码

drop table # tmp


这种方法操作简单但是,如果你只是查询不重复记录我们就不能使用此方法了,可以使用其它办法。

另一种办法,一条查询语名句

 

 代码如下 复制代码
WITH Dups As
(
Select [ID],[Name],[Age],[Sex]
, ROW_NUMBER() OVER(Partition By [Name] Order By (SELECT 0)) AS rn
,RANK() OVER(Partition By [Name] Order By (SELECT 0)) AS rnk
FROM Employee
)
DELETE FROM Dups
WHERE rn<>rnk;


上面的方法我都测试过,都不错了,但后来baidu的一种不错的做法

 

ProductID

ProductName

Unit

UnitPrice

1

North

Bottole

9.0

2

Chang

Bottole

20.0

2

Chang

Bottole

20.0

3

Anistreed

G

1.0

4

Thu

Kg

2.8

4

Thu

Kg

2.8

4

Thu

Kg

2.8

 产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。

 目的:删除表中的重复行,每个Product只留下一条记录。假设表名为:TEST

第一步:为原表添加标识列。
           

 代码如下 复制代码
      Alter Table TEST Add Id int Identity(1,1)

这样,表数据被处理成如下形式
          

ID  ProductID  ProductName  Unit

UnitPrice

1 1

North

 

Bottole

9.0

2 2

Chang

 

Bottole

20.0

3 2

Chang

Bottole

20.0

4 3

Anistreed

G

1.0

5 4

Thu

Kg

2.8

6 4

Thu

Kg

2.8

7 4

Thu

Kg

2.8



第二步:运行以下SQL 就行了

 代码如下 复制代码

Delete from TEST Where ID Not In (Select MIN(ID) From TEST Group by ProdutyID ) 

相关文章

精彩推荐