MySQL 查询,用于从表 2 中选择表 1 中不存在的数据


mysql query to select data from table2 which does not exist in table1

我有 2 个表table1table2,其中table1包含到目前为止收集的数据,table2包含table1的数据以及一些更新/附加的数据。我只需要检索此更新/附加数据并将其插入table1.

现在我知道我可以使用NOT IN来做到这一点,但我不确定在有大量记录的情况下这将是一个非常有效的解决方案。关于执行速度方面的最佳方法的任何建议?

这可以通过simple join两个表

来完成

如下所示:

select t1.* from table1 as t1 join table2 as t2 on t1.id=t2.id where ...[]

我不确定我是否正确理解了您的问题,但让我试一试。假设你有这样的设计:

TableA : {colA, colB, colC, colD, colE}
TableB : {colA, colB, RecC, RecD, RecE}

其中表(tableAtableB(连接在ColA上。我假设TableA的列(colCColDcolE(将被更新,并且记录基于TableB的列(recCrecDrecE(。

在您的声明中:我只需要检索此更新/附加数据并将其插入表1。我想你想根据TableB更新TableA的记录

UPDATE TableA a INNER JOIN TableB b ON a.ColA = b.ColA
SET    a.ColC = b.RecC,
       a.ColD = b.RecD,
       a.ColE = b.RecE
-- WHERE (Condition)          -- if you want to have a condition.

所以上面的语句更新了tableA中的所有记录,如果colA也存在于tableB中,因为我使用了INNER JOIN.您也可以使用 LEFT JOIN .