当前位置: 首页 > 编程笔记 >

SQL语句实现删除重复记录并只保留一条

通煜祺
2023-03-14
本文向大家介绍SQL语句实现删除重复记录并只保留一条,包括了SQL语句实现删除重复记录并只保留一条的使用技巧和注意事项,需要的朋友参考一下


delete WeiBoTopics where Id in(select max(Id) from WeiBoTopics group by WeiBoId,Title having COUNT(*) > 1); 

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢

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


 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)


2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)

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


select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录


delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录


select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)  

6.消除一个字段的左边的第一位:


update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7.消除一个字段的右边的第一位:


update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录


update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq in (select seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

 类似资料:
  • 问题内容: 我有一个sql server数据库,我已经预加载了大量的数据行。 不幸的是,数据库中没有主键,并且表中现在有重复的信息。我不担心没有主键,但是我担心数据库中存在重复项… 有什么想法吗?(原谅我成为sql server newb) 问题答案: 好吧,这就是为什么您应该在表上拥有主键的原因之一。什么版本的SQL Server?对于SQL Server 2005及更高版本: 然后,您不必在明

  • 本文向大家介绍sql 删除表中的重复记录,包括了sql 删除表中的重复记录的使用技巧和注意事项,需要的朋友参考一下 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢 如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) 然后就可以直接删除,基本原理就是,找到重复记录的每一条记录,排除掉重复id最小的记录,删除剩余的重复

  • 问题内容: 我犯了一个错误,并且有多余的重复项。 我有一个包含4个关键字段的表。,,,。 是自动递增和主键。 的组合,而应该是唯一的,我有我之前创建唯一索引来删除重复的行。有些行有一个重复项,有些行有很多重复项。 向我显示了我需要处理的重复值。但是现在我不知道如何保留一个并删除每个重复集的其余部分。 问题答案: 备份数据,然后… MySQL在DELETE语句中支持JOIN。如果要保留第一个重复项:

  • 我试图编写一个代码,它接收并删除该中的重复字符。 例如。如果,则应返回。到目前为止,我的代码只返回与给定的相同的tekst…

  • 我有一个表,需要删除整个行,其中ID发生第二次和以后的时间,但留下第一次出现suCustoriID顺便说一下。M表的ID是主键,CustometID是重复的。因此,我需要删除所有重复的自定义ID行。 上面的代码将删除所有id,包括每个id的第一次出现,但我需要保留它们的第一次出现。请告知。

  • 问题内容: 请考虑下表: 我认为记录{1,2,A}和{2,1,A}是重复的。我需要选择并产生以下记录集: 我尝试了以下查询。但无济于事。 甚至这个: 两者都不起作用。 该数据库将为Oracle 10g。寻找纯SQL解决方案。感谢您的帮助。 问题答案: 使用GREATEST()和LEAST()函数来识别多个列中的公共值。然后使用DISTINCT清除重复项。 这样可以为您提供精确的记录集。但是,如果您