小编典典

将数据从一个表更新到另一个表(在数据库中)

sql

DB专家

我希望有人可以设定正确的方向。

我有两张桌子。表A和表B。系统启动时,将对表A中的所有条目进行整理并复制到表B中(根据表B的架构)。表A可以具有数万行。

系统启动时,表B通过数据库更改通知与表A保持同步。

如果系统重新启动,或者我的服务重新启动,我想重新初始化表B。但是,我想用最少的数据库更新来做到这一点。具体来说,我想:

  • 添加表A中但不在表B中的所有行,并
  • 删除不在表A中但在表B中的任何行
  • 表A和表B共有的任何行都应保持不变

现在,我不是一个“数据库专家”,所以我想知道这样做的常规方式是什么。


阅读 226

收藏
2021-04-22

共1个答案

小编典典

使用exists要继续处理到最低限度。

沿着这些思路进行了一些修改,以使联接正确(也请验证我没有做任何愚蠢的事情,TableA并且TableB从您的描述中得到来回的信息):

insert into TableB
    select 
        *
    from
        TableA a
    where
        not exists (select 1 from TableB b where b.ID = a.ID)

delete from 
    TableB b
where
    not exists (select 1 from TableA a where a.ID = b.ID)
2021-04-22