2016-08-02 43 views
0

我有2個表。如圖中所示具有所需結果一起表A和表B:用主鍵替換行mysql

enter image description here

ID1和ID2的組合是獨一無二的。我想將表A的行內容替換爲表B中的行內容(如所需結果所示,第1行和第4行中的數量已更改爲反映在表B中,同時保留表A的其他行) 。什麼是實現這一目標的最佳方式?可以在這裏使用REPLACE(沒有單列作爲主鍵)。

+0

你有兩個關鍵的正確主索引?如果是這樣的話,是的,只需使用replace即可。 – FrankerZ

回答

0

如果您想通過SELECT造成的,試試這個:

SELECT 
    a.id1, a.id2, 
    COALESCE(b.name1, a.name1) AS name1, 
    COALESCE(b.name2, a.name2) AS name2, 
    COALESCE(b.amount, a.amount) AS amount 
FROM tablea a 
LEFT JOIN tableb b 
ON a.id1 = b.id1 AND a.id2 = b.id2 

如果你想它由UPDATE,試試這個:

UPDATE tablea a 
LEFT JOIN tableb b 
ON a.id1 = b.id1 AND a.id2 = b.id2 
SET 
    a.name1 = COALESCE(b.name1, a.name1), 
    a.name2 = COALESCE(b.name2, a.name2), 
    a.amount = COALESCE(b.amount, a.amount)