这个需要分情况。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数据、如何查找数据库中的重复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)