2012-02-22 56 views
0

存在數據I有2個表table1table2,其中table1含有迄今收集的數據,幷包含table2table1「s的數據與一些更新的/額外的數據一起。我只需要檢索此更新/附加數據並將其插入table1MySQL查詢選擇從表2不table1中

現在我知道我可以使用NOT IN來做到這一點,但我不確定這將是一個非常有效的解決方案,以防大量記錄。任何關於執行速度方面最好的方法的建議?

+0

請對你的問題更具體。添加表格模式,虛擬記錄和你想要的結果將有助於SO社區明確地理解問題。 – 2012-02-22 07:55:13

回答

3

這可以用simple join做兩個表

類似如下:

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

還有一件事 - 連接必須是左外連接,而不是內連接。 – bodi0 2012-02-22 08:33:34

0

我不知道如果我正確地理解你的問題,但讓我試試看。假設你有一個這樣的設計:

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

其中表(tableAtableB)是加入了對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