2016-01-06 123 views
2

我有2個表。一個從昨天開始(300k行),另一個從今天開始具有相同的行數,但某些列中的數據發生了變化。MYSQL - 從另一個表更新多行

這兩個表格大約有120列。

我如何只更新更改。
我一直在使用刪除嘗試:

delete from tableA 
    where id in (select id from tableB) 

但它太慢了。
也試過

update tableA inner join tableB 
    on tableA.id=TableB.id 

,並沒有奏效。

enter image description here

+0

當你嘗試tableA內部連接tableB tableA.id = TableB.id時什麼不工作? –

+0

我試圖找到內在和更新 - 沒有奏效。收到錯誤1064 - 語法錯誤 – Katy

+0

那麼你必須列出你想要更新的列,就像在Code-Monk的答案中一樣。 –

回答

5

您的更新設置的值查詢以獲取更改。

例子:

update tableA inner join tableB on tableA.id=TableB.id 
set tableA.col1=TableB.col1, 
    tableA.col2=TableB.col2, 
    tableA.col3=TableB.col3; 

,你也可以在where子句添加更多的條件,使過濾後的記錄查詢運行。

+0

我在兩個表中大約有120列。有沒有辦法一起做到這一點? – Katy

+0

是啊..但你只設置那些列想要獲得更改。如果你想更新所有的列值,你可以嘗試其他工具,比如'Excel'來準備查詢。 –

+0

非常感謝。 – Katy

1

從表A 刪除其中id中(從tableB的選擇ID)

代替上述查詢的嘗試: -

Delete tableA from tableA left Join tableB ON tableA.id = tableB.id where tableB.id IS NOT NULL; 
+0

我得到錯誤1064 - 不起作用。 – Katy

+0

我編輯我的答案,請檢查。 – Archana

+0

非常感謝你的緩慢... – Katy