存在數據I有2個表table1
和table2
,其中table1
含有迄今收集的數據,幷包含table2
table1
「s的數據與一些更新的/額外的數據一起。我只需要檢索此更新/附加數據並將其插入table1
。MySQL查詢選擇從表2不table1中
現在我知道我可以使用NOT IN
來做到這一點,但我不確定這將是一個非常有效的解決方案,以防大量記錄。任何關於執行速度方面最好的方法的建議?
存在數據I有2個表table1
和table2
,其中table1
含有迄今收集的數據,幷包含table2
table1
「s的數據與一些更新的/額外的數據一起。我只需要檢索此更新/附加數據並將其插入table1
。MySQL查詢選擇從表2不table1中
現在我知道我可以使用NOT IN
來做到這一點,但我不確定這將是一個非常有效的解決方案,以防大量記錄。任何關於執行速度方面最好的方法的建議?
這可以用simple join
做兩個表
類似如下:
select t1.* from table1 as t1 join table2 as t2 on t1.id=t2.id where ...[]
還有一件事 - 連接必須是左外連接,而不是內連接。 – bodi0 2012-02-22 08:33:34
我不知道如果我正確地理解你的問題,但讓我試試看。假設你有一個這樣的設計:
TableA : {colA, colB, colC, colD, colE}
TableB : {colA, colB, RecC, RecD, RecE}
其中表(tableA
,tableB
)是加入了對ColA
。 I假設TableA
的列(colC
,ColD
,colE
)將被更新,記錄基於TableB
的列(recC
,recD
,recE
)。
在您的聲明中:我只需要檢索此更新/附加數據並將其插入到table1中。。我想你想基於TableB
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
因爲我用INNER JOIN
也存在tableB
所有記錄更新TableA
的記錄。您也可以使用LEFT JOIN
。
請對你的問題更具體。添加表格模式,虛擬記錄和你想要的結果將有助於SO社區明確地理解問題。 – 2012-02-22 07:55:13