乐淘资源 干货福利 mysql删除重复数据只保留一条id最大

mysql删除重复数据只保留一条id最大

广告位

如何清除mysql查询的重复数据

查询及删除重复记录的SQL语句

查询及删除重复记录的SQL语句

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

select*frompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

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

deletefrompeople

wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

androwidnotin(selectmin(rowid)frompeoplegroupbypeopleIdhavingcount(peopleId)>1)

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

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

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

deletefromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

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

select*fromvitaea

where(a.peopleId,a.seq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)

androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

在A表中存在一个字段“name”,

而且不同记录之间的“name”值有可能会相同,

现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;

SelectName,Count(*)FromAGroupByNameHavingCount(*)>1

如果还查性别也相同大则如下:

SelectName,sex,Count(*)FromAGroupByName,sexHavingCount(*)>1

declare@maxinteger,@idinteger

declarecur_rowscursorlocalforselect主字段,count(*)from表名groupby主字段havingcount(*)>;1

opencur_rows

fetchcur_rowsinto@id,@max

本回答由提问者推荐

mysql的sql语句如何去掉重复的数据

难倒只能分步操作,蛋疼

以下是网友写的,同样是坑爹的代码,我机器上运行不了。

1.查询需要删除的记录,会保留一条记录。

selecta.id,a.subject,a.RECEIVERfromtest1aleftjoin(selectc.subject,c.RECEIVER,max(c.id)asbidfromtest1cwherestatus=0GROUPBYRECEIVER,SUBJECThavingcount(1)>1)bona.id

2.删除重复记录,只保留一条记录。注意,subject,RECEIVER要索引,否则会很慢的。

deleteafromtest1a,(selectc.subject,c.RECEIVER,max(c.id)asbidfromtest1cwherestatus=0GROUPBYRECEIVER,SUBJECThavingcount(1)>1)bwherea.subject=b.subjectanda.RECEIVER=b.RECEIVERanda.id

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

select*frompeoplewherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)

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

本回答由提问者推荐

mysql如何删除大数据量重复数据

//select count(*) as c from table group by fieldname having c > 1

找出重复这个需要分情况。

1,你的数据库表中有主键,且主键上面的数据为唯一值。也就是没有重复值。

那么你在删除的时候,将这个唯一值作为条件进行删除。

如: delete from [表名] where id=1

2.所有的数据相同,那么你只能打开数据表,手工选定其中某一条,进行删除。

在mysql数据库中删除重复的数据

你所说的重复是不是指出所有字段一样?

假设a表有 a0是主键 a1 a2两个字段。

delete a where a0 in

(select a0 from a group by a1,a2

having count(*) > 1)直接拿1楼的来改吧,

delete from zhszty_ebook

where id not in(

select * from (select max(id) from zhszty_ebook group by url

) as tmp);————mysql有个特性,对于表进行修改,删除操作,子查询不能和外层的查询的表一样,所以在加个select就可以了。其他数据库按照楼上的那个是没问题的

本文来自网络,不代表乐淘资源立场,转载请注明出处,如有侵权问题需要处理,请联系站长删除。联系QQ 917118162

作者: admin

上一篇
下一篇
广告位
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 917118162@qq.com

工作时间:周一至周五,9:00-17:30
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部