2016-08-02 78 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)