mysql - 使用sql查找表之间不匹配的行

标签 mysql sql select sql-insert

我正在尝试使用 SQL 查找 2 个表之间的所有不匹配行。 表 codes 包含 600 万个条目,表 burnt 包含 100 万个条目。 我尝试过使用 INSERT INTO SELECT,但这不起作用,过了一会儿就崩溃了。

INSERT INTO unburnt
SELECT
    *
FROM
    codes T2
WHERE
    NOT EXISTS (SELECT *
        FROM
           burnt T1
        WHERE
           T1.code = T2.code)

任何不匹配的行都应放入unburnt 表中。 处理此查询的最佳方法是什么?

所有 3 个表的数据库表结构均相同。

代码

  • ID
  • 代码(文本)

烧焦

  • ID
  • 代码(文本)

未燃烧

  • ID
  • 代码(文本)

最佳答案

尝试将 INSERT 分解为一组较小的 INSERT:

INSERT INTO unburnt SELECT * ....  WHERE T1.code = T2.code and T2.ID between 1 and 100000) 
INSERT INTO unburnt SELECT * ....  WHERE T1.code = T2.code and T2.ID between 100001 and 200000)
etc.

关于mysql - 使用sql查找表之间不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321769/

相关文章:

INTERSECT 的 mysql 替代品

javascript - jQuery 选择 onChange 更新输入字段值

mysql - 如何将 mysql 查询 "group by statement"结果转换为 json 结构?

php & MySQL - 允许用户更新他们的详细信息

mysql - 当 MySQL 处于状态 "Sending data"时是什么意思?

MySQL只显示特定字段的第一行

sql - 类似于 TOP 10 的查询来选择中间记录?

带有外键的 PHP MySQL 查询搜索

php - 为包含多个邮政编码的月度报告设计 ERD 时遇到问题

c - 套接字选择不起作用