求MYSQL中某字段内的重复数据以及删除重复保留一条

deletefromtbl_vodwhereidnotin(selectidfrom(selectidfromtbl_vodgroupbyd_namehavingcount(d_name)>1)asa)mysql不支持查询同一个表后进行修改和删除操作。
删除的思路是:1.selectidfromtbl_vodgroupbyd_namehavingcount(d_name)>1找到应该保留的id2.selectidfrom(selectidfromtbl_vodgroupbyd_namehavingcount(d_name)>1)asa指定应该保留的结果的新表名,找到保留id3并执行删除操作

MySQL之查询重复记录、删除重复记录方法大全

1)ORDERBYTitleDESC

1查找所有重复记录\1。
Select*From表Where重复字段In(选择重复字段From表GroupBy重复字段HavingCount(*)>1)

2.过滤重复记录(只显示一条)\Select*FromHZTWhereIDIn(SelectMax(ID)FromHZTGroupByTitle)注意:此处显示ID最大的记录

1。
)

2.保存一条记录(这应该是大多数人需要的^_^)\DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)注:这里保存ID最大的记录

1)

2.删除表中多余的重复记录重复记录根据一个字段(peopleId)进行评估,只留下rowid最小的记录\deletefrompeoplewherepeopleIdin(selectpeopleIdfgroup)。
ingcount(peopleId)>1)androwidnotin(selectmin(rowid)frompeoplegroupbypeopleIdhavingcount(peopleId)>1)

1)

4删除多余的重复记录(多个字段)表中,只留下rowid\deletefromvitaeawhere(a.peopleId,a.seq)最小的记录。
(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount(*)>1)androwidnotin(selectmin(rowid)fromvitaegroupbypeopleId,seqhavingcount(*)>1)

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

4.补充\有两条以上重复记录,一条是完整重复记录,一是所有字段重复的记录,二是部分关键字段重复的记录,如Name字段重复,而其他字段不一定重复或可以忽略。
\1.对于第一类重复,比较容易解决使用\selectdistinctfromtableName\得到没有重复记录的结果集。
\如果表需要删除重复记录(保留1条重复记录),可以按如下方式删除\selectdistinctinto#TmpfromtableName\droptabletableName\select*intotableNamefrom#Tmp\droptable#Tmp\因为这个重复是一个糟糕的表设计问题可以通过添加唯一索引列来解决。

2.此类重复问题通常需要保留重复记录中的第一条记录。
操作方法如下\假设Name、Address等字段有重复,要求获取唯一的。
这两个字段的结果集\selectidentity(int,1,1)asautoID,into#TmpfromtableName\selectmin(autoID)asautoIDinto#Tmp2from#TmpgroupbyName,autoID\selectfrom#TmpwhereautoIDin(selectautoIDf\------------------------———————

原文:https://juejin.cn/pos/7095305652330823694