我有两个相同的表。我想比较这两个表并从中获取结果。条件是:


将按TID分组的TABLE1中的每个记录与按其每个TID分组的TABLE2中的所有记录进行比较。
如果要在TABLE2中发现TABLE1中的每个分组记录(也按每个tid分组的TABLE2中的记录),最多N(N是用户输入变量),则该记录将被插入到新表中。


例如,像下面的ss一样,按TID 2分组的ITEM C-F-A在table2中出现3次,因此将它们插入到新表中:



我已经尝试过为此编写代码,并且它可以正常工作(vb.net),但是编译器需要花费大量的时间才能完成。主要原因是我正在处理一个巨大的数据库。

我在程序中完成的方法是将两个表填充为2d数组。在将两个元素与if clause比较时将值分配给数组。

下面是我创建的二维数组:



但是这种方法确实很昂贵,我在上面的图片上的真实数据库是1st 2d数组有2k条记录,而2nd 2d数组有800条记录,当我尝试计算编译完成的估计时间时,它显示了一个惊人的数字,大约为16小时..天哪!

所以我想知道,是否可以使用mysql查询解决此问题,
还是比我做的更有效的其他方法?

最佳答案

INSERT INTO tbl3
  SELECT tbl1.TID, tbl1.ITEM
  FROM tbl1
    JOIN tbl2 ON tbl2.TID = tbl1.TID AND tbl2.ITEM = tbl1.ITEM


这将为tbl1中的每个记录在tbl3中插入一条记录,该记录在tbl2中具有由TID和ITEM标识的对应记录。

假定TID / ITEM在tbl1和tbl2中都是唯一索引。

关于mysql - mysql从两个相同的表中获取结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21328569/

10-13 08:49