删除数据库中的重复数据

要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)


  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

07-08-27
这个方法我仔细试了一下,好象不能实现删除重复记录的功能,于是在网上又找了找,终于发现一个比较好操作的语句。

0061 -- 用SQL语句删除重复记录

例如表base中有如下数据:
id name age

1  张一 11

1  张一 12

2  李二 21

3  王三 31

3  王三 32

要删除上面id,name重复的记录,即id = 1和3的数据。

语句如下:

delete a from base a
inner join
(
select id ,name
from base
group by id , name
having count(name)>1
)b
on a.id = b.id and a.name = b.name
经过测试,完全没有问题,而且也比较好理解。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值