【问题标题】:Copy rows from one table to another that are updated/inserted after a specific date将行从一个表复制到另一个在特定日期后更新/插入的行
【发布时间】:2022-11-16 16:22:48
【问题描述】:

我有两个 SQL 表,table Atable B

最初我将所有行从table A 复制到table B,让我们说date D。现在我想删除table A。在删除之前,我想将所有新记录条目(在date D 之后创建)复制到table B。复制时我需要检查是否有任何最初复制的行已更新,如果已更新,则将其替换为更新后的数据。我在两个表中都有 created timestampupdated timestamp 字段。

简而言之,我需要执行更新和插入操作以将新数据从一个表复制到另一个表。

【问题讨论】:

  • 你为什么要做这么复杂的事情?如果你描述的你想得到什么是正确的,你可以再次删除表 B,然后将表 A 重命名为表 B。

标签: mysql sql database


【解决方案1】:
  1. 添加标志(位列),如archived默认为0

    当您将行从table A 复制到table B 时,执行:

    UPDATE `table A` SET `archived` = 1
    

    所以你可以找到从未复制到table B的行:

    SELECT * FROM `table A` WHERE `archived` = 0;
    -- OR:
    INSERT INTO `table C`
    SELECT * FROM `table A` WHERE `archived` = 0;
    

    我不知道你想更新table A 的行是什么?

    您要将它们更新为table B 还是将它们复制到table C? 如果需要,当你修改一行时,你可以再次将archived更改为0

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多