mysql从两个相同的表中获取结果

标签 mysql performance compare

我有两张相同的 table 。我想比较这两个表并从中得到结果。条件是:

  1. 表 1 中按 TID 分组的每条记录都将与表 2 中按每个 TID 分组的所有记录进行比较。

  2. 如果要在 TABLE2 中发现 TABLE1 中的每个分组记录(TABLE2 中也按每个 tid 分组的记录),则多达 N 个(N 是用户输入变量) ,那么该记录将被插入到新表中。

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

enter image description here

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

我在程序中完成的方法是将两个表填充到二维数组中。为数组赋值,同时使用 if 子句 比较两个元素。

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

enter image description here

但这种方法确实很昂贵,上图中我的真实数据库是第一个 2d 数组有 2k 条记录,第二个 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从两个相同的表中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316034/

相关文章:

mysql - 基于购买日期的每日消耗增量

php - Delete NOT IN array 删除所有行,PHP Mysql

python - 字符串类型变量的自定义千位分隔符

git - 如何使用git比较两个不在repo中的文件

mysql - 比较 mysql 表并更新值

mysql - SQL - 来自 SQL 查询的查询 - 如何从未知列中读取

mysql - php/mysql 安装中的 unix 时间戳 - 将其存储为的最佳 MySQL 数据类型?

java - 使用 ArrayList 或 HashMap 以获得更好的速度

node.js - 为在 node.js 应用程序上运行的 mongodb 计算 n 个连接池所需的内存

python - 如何在Python中复制数据