【问题标题】:Insert only new records that are added to TABLE A into TABLE B仅将添加到表 A 的新记录插入表 B
【发布时间】:2021-03-17 10:35:47
【问题描述】:

目前我在 SQL 数据库中有 2 个表:表 A 和表 B 我正在使用语法

Insert Into TABLE B
Select id, col, col, col......
From TABLE A
Where id NOT IN (SELECT id from TABLE B)
End;

这种语法效果很好。但是,如果我删除表 B 中的记录,则上述代码将作为回报,将删除的记录插入表 B。我不希望这种情况发生。是否有另一种方法可以插入不在表 B 中的记录“仅一次”。它基本上应该忽略所有其他先前插入的插入到表 B 中的记录。如果它被删除,则不应再次插入。

我希望它只插入添加到表 A 中的新记录。

【问题讨论】:

  • 您能否在单独的表中跟踪已删除行的 ID,从而能够排除重新插入,或者跟踪表 A 中最后插入的 ID,只插入表 B 中的新行更高。或者使用Trigger 插入表B
  • 您可以添加另一个not in/not exists 谓词来检查表本身的id (B)。或者在逻辑上而不是物理上使用标志删除

标签: sql insert


【解决方案1】:

如果 ID 是连续整数,则可以使用:

Insert Into TABLE B
Select id, col, col, col......
From TABLE A
where ID > select(max(id) from table B)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2017-01-10
    相关资源
    最近更新 更多