2016-02-05 24 views
-1

我有一個包含2個表的數據庫。在表1有兩列:只有當自動增量數據相等時才更新另一個表列的mysql列

columnA(自動增量)和columnB(文本)

,並在表2: columnC(自動增量)和columnD(文本)

我想替換(複製)數據在columnB中,只有當自動增量列是等於時,纔有來自columnD的數據。

我想這一點,但其不正確:

UPDATE table1 
    SET columnB = (
     SELECT columnD 
     FROM table2 WHERE (
     SELECT columnA FROM table1 = SELECT columnC FROM table2) 

感謝您的幫助提前! :)

+0

查看關於連接 – Strawberry

回答

0

您可以通過與內的更新來更新其加入:

UPDATE `table1` as a 
INNER join table2 b on a.columnA = b.columnC 
SET a.`columnB` = b.`columnD` 
-- WHERE clause if needed ... 

參見: SQL Server - inner join when updating

+0

我已經更新了MySQL的代碼。你可以再試一次嗎? –

+0

我錯過了別名'a'和'b'。這是一個更新:http://pastie.org/10709664。上面這些表和列是否存在於您的數據庫中? –

-1

您可以使用左側加入: UPDATE table1 t1 left join table2 t2 on t1.columnA=t2.columnC set t1.columnB=t2.columnD where t2.columnc is not null

+0

這是寫一個內部連接的冗長方式 – Strawberry

-1

你正試圖用一個查詢更新columnB,這意味着無論是否是columnA和columnC是平等的。我建議創建一個過程,在那裏執行if語句,然後簡單地調用過程。

相關問題