早教吧作业答案频道 -->其他-->
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删除两个同结构表,...的网友还看了以下:
设关系R1={(1,x),(2,x),(2,y),(3,y)},R2={(x,a),(x,b),( 2020-05-13 …
数学题20000000急,高中集合···达人进设实数a,b,c满足:ac不等于0,且a不等于c.集 2020-07-18 …
设U=R,集合A={y|y=根号x-1,x=>1},B={x∈Z丨x^2-4=>0},则下列结论正 2020-07-30 …
分式(要求有过程)1、计算(x-y+4xy/x+y)(x+y-4xy/x+y)的结果()A.y方-a 2020-10-31 …
xy-yz+zx-xz+yx+zy-2xyz因式分解后的结果是()A.(y-z)(x+y)(x-z) 2020-11-01 …
设x为有理数,y=|x-1|+|x+1|,下列四个结论中,正确的结论是?A.y没有最小值B.只有一个 2020-11-01 …
若1+2+3+…+n=a,求代数式(xny)(xn-1y2)(xn-2y3)…(x2yn-1)(xy 2020-11-03 …
以下程序段的执行结果是inta,y;a=10;y=0;do{a+=2;y+=a;printf("a= 2020-12-15 …
数据结构论述题,假设在树中,结点x是结点y的双亲时,用(x,y)来表示树边.已知一棵树边的集合为:{ 2020-12-23 …
1.X=Y,则下列结论不正确的是?()(A)X+A=Y+A(B)X-A=Y-A(C)AX=AY(D) 2020-12-23 …