我有2张桌子。一个来自昨天(300k行),另一个来自今天,具有相同的行数,但数据在某些列中发生了变化。
这两个表有大约120列。
如何仅更新更改 我尝试过使用删除:
delete from tableA
where id in (select id from tableB)
但它太慢了 也尝试了
update tableA inner join tableB
on tableA.id=TableB.id
它没有用。
答案 0 :(得分:7)
您必须在更新查询中设置值才能获得更改。
示例:
update tableA inner join tableB on tableA.id=TableB.id
set tableA.col1=TableB.col1,
tableA.col2=TableB.col2,
tableA.col3=TableB.col3;
并且您还可以在where
子句中添加更多条件,以便在已过滤的记录上运行查询。
答案 1 :(得分:0)
从tableA中删除 其中id为(从tableB中选择id)
而不是上述查询,请尝试以下方法: -
Delete tableA from tableA left Join tableB ON tableA.id = tableB.id where tableB.id IS NOT NULL;