我有2个表A和B.我想将表A与表B进行比较,对于任何不匹配的记录,我想将表A中的整个记录更新为表B.我们有2个主键,有大约4千万条记录
我们可以在一个SQL或脚本中实现这一点吗?或者我可以创建临时表(表c),其中我可以编写不匹配的表A记录,然后使用临时表C更新表B.这将在MY SQL工作台中使用mariaDB DB。
添加了其他信息 - 我有2个主键和15列。因此,理想情况下,必须匹配13列并发现不匹配,假设两个表中的主键匹配。
请提供任何反馈意见,并提供帮助和赞赏。
答案 0 :(得分:1)
一种方法是将B表的左连接更新到A表,并使用后者的值更新前一表中的所有列。请注意,WHERE
子句检查以确保B中的记录不与A中的任何记录匹配。
UPDATE TABLE_B b
LEFT JOIN TABLE_A a
ON a.col1 = b.col1 AND
a.col2 = b.col2 -- AND all other columns
SET b.col1 = a.col1,
b.col2 = a.col2 -- AND set all other columns
WHERE a.col1 IS NULL