早教吧作业答案频道 -->其他-->
mysql删除两个同结构表,两个相同列数据.msyql两个表结构相同:A表:mobid,itemid,min,max22222,333333,100,10033333,444444,100,10044444,555555,100,10055555,666666,100,100B表:mobid,itemid,min,max22222,333333,111,11133333,444444,11
题目详情
mysql 删除两个同结构表,两个相同列数据.
msyql 两个表结构相同:
A表:mobid,itemid,min,max
22222,333333,100,100
33333,444444,100,100
44444,555555,100,100
55555,666666,100,100
B表:mobid,itemid,min,max
22222,333333,111,111
33333,444444,111,111
44444,555555,111,111
55555,666666,111,111
77777,888888,111,111
现在希望能删除,表B中,已存在于表A的:mobid 和 itemid相同的数据
也就是相当要删除掉
B表:
22222,333333,111,111
33333,444444,111,111
44444,555555,111,111
55555,666666,111,111
的这些数据.
msyql 两个表结构相同:
A表:mobid,itemid,min,max
22222,333333,100,100
33333,444444,100,100
44444,555555,100,100
55555,666666,100,100
B表:mobid,itemid,min,max
22222,333333,111,111
33333,444444,111,111
44444,555555,111,111
55555,666666,111,111
77777,888888,111,111
现在希望能删除,表B中,已存在于表A的:mobid 和 itemid相同的数据
也就是相当要删除掉
B表:
22222,333333,111,111
33333,444444,111,111
44444,555555,111,111
55555,666666,111,111
的这些数据.
▼优质解答
答案和解析
看到你的追问.数据库是20W级别的.
如果用O(n^2)的更新是肯定超时的.
计算次数是20W*20W*字符长度
我给你提个O(n)的思路,不过要用程序实现,SQL没机会.HQL或许有,
首先是把A,B表中的都读到内存.
然后做哈希,开个10^10布尔类型的数组,1G内存多点,2G肯定够用.
然后做A表的哈希,
做好后遍历B表,做哈希.重复的做标记.
完成一轮后使用令一套保证跟第一次哈希不重复的哈希算法再遍历一次标记过的B表,
再遍历A表.
如此只需分别遍历两次AB表,即可完成查重.
然后把B表中重复的删掉即可.
计算机的执行效率大约是每秒10000*10000次.
如果把AB表中的string型主键转成int型存储,然后再做比对.
大约是20W*20W*2的比对次数,那么800秒,就是20到40分钟.
都应该可以比对完,但是如果是如题描述的12位字符.就需要几个小时甚至几天了.
再说一种O(Nlog2N)的算法.
首先是对A,B进行合并,然后做快排序.
然后遍历一次进行顺序查重.
这种方法用的内存比较少,计算量是40W*100,基本上10秒内都能出结果.
如果用O(n^2)的更新是肯定超时的.
计算次数是20W*20W*字符长度
我给你提个O(n)的思路,不过要用程序实现,SQL没机会.HQL或许有,
首先是把A,B表中的都读到内存.
然后做哈希,开个10^10布尔类型的数组,1G内存多点,2G肯定够用.
然后做A表的哈希,
做好后遍历B表,做哈希.重复的做标记.
完成一轮后使用令一套保证跟第一次哈希不重复的哈希算法再遍历一次标记过的B表,
再遍历A表.
如此只需分别遍历两次AB表,即可完成查重.
然后把B表中重复的删掉即可.
计算机的执行效率大约是每秒10000*10000次.
如果把AB表中的string型主键转成int型存储,然后再做比对.
大约是20W*20W*2的比对次数,那么800秒,就是20到40分钟.
都应该可以比对完,但是如果是如题描述的12位字符.就需要几个小时甚至几天了.
再说一种O(Nlog2N)的算法.
首先是对A,B进行合并,然后做快排序.
然后遍历一次进行顺序查重.
这种方法用的内存比较少,计算量是40W*100,基本上10秒内都能出结果.
看了 mysql删除两个同结构表,...的网友还看了以下:
关于数据结构删除的三道题,(1)删除p所指向结点的后继结点(假设存在)(2)删除p所指向的结点(3) 2020-03-30 …
数据更新包括插入数据、()和删除数据3条语句。A.修改数据B.记录数据C.编制数据D.查询数据 2020-05-24 …
数据更新包括插入数据、()和删除数据三条语句。A.修改数据B.记录数据C.查询数据D.编制数据 2020-05-24 …
关系数据库规范化中的删除操作异常是指()。A.删除了不该删除的数据B.应该删除的数据没有删除C.无 2020-05-24 …
当使用“TABLE STRUCTURE”对话框从数据库中删除一个字段时,该字段中的数据将()。A.从 2020-05-24 …
SQLServer中使用企业管理器从数据库中删除数据或日志文件的步骤如下,正确的步骤是()?A、展开 2020-05-26 …
python根据列表的ID删除元素比如说listaaaa=['11','22','33']aa[0 2020-07-09 …
根据表中五种气体在标准状况下的密度和溶解性,回答下列问题:空气NH3CH4HClO2密度/g•L- 2020-07-19 …
易语言怎么取文本第二个符号----左边的数据.同时删除右边的数据!例如:11111----2222 2020-07-24 …
C语言的题目输入不多于10个学生的姓名,学号,成绩(包括C语言,数据结构,java这3门课程),1. 2020-11-04 …