如何删除表中的重复记录?

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

--测试数据
/*-----------------------------
select*fromtt
-----------------------------*/
id         pid        
----------------------
1          1
1          1
2          2
3          3
3          3
3          3

(所影响的行数为6行)

首先,如何查询table中有 重复记录
select*,count(1)asrownum
fromtt
groupbyid,pid
havingcount(1)>1
id         pid        rownum     
---------------------------------
1          1          2
3          3          3

(所影响的行数为2行)

方法一:使用distinct和临时表
ifobject_id('tempdb..#tmp')isnotnull
droptable#tmp
selectdistinct*into#tmpfromtt
truncatetablett
insertintottselect*from#tmp

方法二:添加标识列
altertablettaddNewIDintidentity(1,1)
go 
deletefromtt whereexists(select1fromttawhere a.newid>tt.newidandtt.id=a.idandtt.pid=a.pid)
go
altertablettdropcolumnNewID
go

--测试结果
/*-----------------------------
select*fromtt
-----------------------------*/
id         pid        
----------------------
1          1
2          2
3          3

(所影响的行数为3行)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值