我有 2 个表table1
和table2
,其中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}
其中表(tableA
,tableB
(连接在ColA
上。我假设TableA
的列(colC
,ColD
,colE
(将被更新,并且记录基于TableB
的列(recC
,recD
,recE
(。
在您的声明中:我只需要检索此更新/附加数据并将其插入表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
.