mysql 现在表中出现重复数据,怎样删除重复数据

mysql 现在表中出现重复数据,怎样删除重复数据,第1张

这个需要分情况。1,你的数据库表中有主键,且主键上面的数据为唯一值。也就是没有重复值。那么你在删除的时候,将这个唯一值作为条件进行删除。如: delete from [表名] where id=12所有的数据相同,那么你只能打开数据表,手工选定其中某一条,进行删除。

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。

第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表

1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;

第二步:创建新表RES

1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;

第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段

1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152id=tmp3col1

至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。

实现方式如下:

  Dim cnn As Object, rs As Object, SQL$, i&, s$

    Set cnn = CreateObject("ADODBConnection")

    cnnOpen "Provider=MicrosoftJetOledb40;data Source=" & ThisWorkbookPath & "\排课数据mdb"

    SQL = "Select 星期&节&班级,count(星期&节&班级) from 排课 where 星期 is not null group by 星期&节&班级 having count(星期&节&班级)>1"

    Set rs = CreateObject("ADODBRecordset")

    rsOpen SQL, cnn, 1, 3

    If rsRecordCount Then

        For i = 1 To rsRecordCount

            s = s & vbCrLf & "星期" & rsFields(0) & "班,重复次数:" & rsFields(1)

            rsMoveNext

        Next

        MsgBox "有" & rsRecordCount & "条记录重复:" & s

    Else

        MsgBox "没有发现重复记录"

    End If

    rsClose

    cnnClose

    Set rs = Nothing

    Set cnn = Nothing

End Sub

1。删除全部重复记录(慎用) 

Delete表Where重复字段In(Select重复字段From表GroupBy重复字段HavingCount()>1)

2。保留一条(这个应该是大多数人所需要的^_^)

DeleteHZTWhereIDNotIn(SelectMax(ID)FromHZTGroupByTitle)

注:此处保留ID最大一条记录

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

selectfromvitaea

where(apeopleId,aseq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount()>1)

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

deletefromvitaea

where(apeopleId,aseq)in(selectpeopleId,seqfromvitaegroupbypeopleId,seqhavingcount()>1)

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

这个问题就是要删除表中重复的记录,查询的sql语句如下:

select id,name from (

select id,name,row_numer() over(partition by id,name order by id,name) rn from tableA)

where rn>1;

删除的sql语句如下:

DELETE tableA WHERE ROWNUM = (SELECT ROWNUM

FROM (SELECT id,name,

ROW_NUMBER() OVER(PARTITION BY id,name ORDER BY id,name) RN

FROM tableA )

WHERE RN > 1);

以上就是关于mysql 现在表中出现重复数据,怎样删除重复数据全部的内容,包括:mysql 现在表中出现重复数据,怎样删除重复数据、怎么删除重复的Mysql数据、如何查找数据库中的重复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存