MySQL:从1个表复制到另一个表而不是覆盖现有的?

时间:2013-04-19 08:46:22

标签: mysql

我有两张桌子:

  1. tableOriginal
  2. tableBackup
  3. 它们具有完全相同的结构。

    我想要一个我可以在一天中的任何时间运行的SQL语句,它会将tableOriginal中的所有行复制到tableBackup,而不会覆盖tableBackup中的项目。基本上,此命令必须将tableBackup与tableOriginal同步。

    我该怎么做?

2 个答案:

答案 0 :(得分:4)

INSERT INTO tableBackup(SELECT * FROM tableOriginal)

只要主键被更新或替换为新的传入数据没有问题,这不会给您带来问题。但是,正如您所知,备份表将在您的命令之后拥有更多数据,因为它没有删除它以前的数据

答案 1 :(得分:2)

为什么不首先删除 tableBackup 中的所有数据,然后 INSERT tableOriginal 中的数据到 tableBackup

DELETE FROM tableBackup
INSERT INTO tableBackup(SELECT * FROM tableOriginal)

为什么我们需要先删除? 因为如果我们要将唯一数据插入tableBackup, 下次我们插入它将不会执行,因为我们将插入/添加一些已存在的数据..

希望你得到我想说的话。