我有2张桌子。表A和表B如图所示,并带有所需结果:
id1和id2的组合是唯一的。我想用表B中的那些替换表A的行的内容(如在期望的结果中所见,行1和行4中的量已被改变以反映表B中的量,同时保留表A的其他行) 。实现这一目标的最佳方法是什么?可以在此处使用REPLACE(没有单个列作为主键)。
答案 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)