0
我有2个表。如图中所示具有所需结果一起表A和表B:用主键替换行mysql
ID1和ID2的组合是独一无二的。我想将表A的行内容替换为表B中的行内容(如所需结果所示,第1行和第4行中的数量已更改为反映在表B中,同时保留表A的其他行) 。什么是实现这一目标的最佳方式?可以在这里使用REPLACE(没有单列作为主键)。
我有2个表。如图中所示具有所需结果一起表A和表B:用主键替换行mysql
ID1和ID2的组合是独一无二的。我想将表A的行内容替换为表B中的行内容(如所需结果所示,第1行和第4行中的数量已更改为反映在表B中,同时保留表A的其他行) 。什么是实现这一目标的最佳方式?可以在这里使用REPLACE(没有单列作为主键)。
如果您想通过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)
你有两个关键的正确主索引?如果是这样的话,是的,只需使用replace即可。 – FrankerZ