替换没有主键mysql的行

时间:2016-08-02 05:48:41

标签: mysql

我有2张桌子。表A和表B如图所示,并带有所需结果:

enter image description here

id1和id2的组合是唯一的。我想用表B中的那些替换表A的行的内容(如在期望的结果中所见,行1和行4中的量已被改变以反映表B中的量,同时保留表A的其他行) 。实现这一目标的最佳方法是什么?可以在此处使用REPLACE(没有单个列作为主键)。

1 个答案:

答案 0 :(得分: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)