sql中怎么删除两条重复记录并保留一条

sql中怎么删除两条重复记录并保留一条,第1张

将数据去重复后暂存到临时表#a中

select distinct * into #a from table1 where 条件

delete table1 where 删除限制条件

insert into table1 select * from #a -将暂存的数据插回数据库

drop table #a -删除临时表

注:当前的数据库,每一个表都应该有一个标志字段,以保证记录不完全重复,否则实用中极易出问题。

扩展资料:

SQL语句删除掉重复的其他情况

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

SELECT

*

FROM

people

WHERE

peopleId IN (

SELECT

peopleId

FROM

people

GROUP BY

peopleId

HAVING

count(peopleId) >1

)

2、查找表中多余的重复记录(多个字段)

SELECT

*

FROM

vitae a

WHERE

(a.peopleId, a.seq) IN (

SELECT

peopleId,

seq

FROM

vitae

GROUP BY

peopleId,

seq

HAVING

count(*) >1

)

参考资料来源:结构化查询语言(SQL)-百度百科

这个简单,凡是重复的保留一个就可以了,是这个意思吧。

那么就是 select min(id) from table group by title这样的就能查出来每个title的最小的id,就算有重复的,也能显示出来最小的id,如果没有重复,那么这条语句也会得到唯一的id

然后where id not in(上面的语句)

这样就可以找到所有的不在上面语句朝招范围内的语句,比如id为2732,2733,2734这三条,那么上面的语句查出来的id就是2732,下面这个not in能查出来的就是2733和2734,然后再用delete删除就可以了。

当然min(id)也可以用max(id)效果是一样的,只是保留的id变成了2734

不过这里有一个问题,那就是title字段重复,整个行都重复吗?如果能确认整行重复,那么这条语句基本没问题,如果不能确定,那么就还需要再考虑才可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9967035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存