我有两张桌子:
它们具有完全相同的结构。
我想要一个我可以在一天中的任何时间运行的SQL语句,它会将tableOriginal中的所有行复制到tableBackup,而不会覆盖tableBackup中的项目。基本上,此命令必须将tableBackup与tableOriginal同步。
我该怎么做?
答案 0 :(得分:4)
INSERT INTO tableBackup(SELECT * FROM tableOriginal)
只要主键被更新或替换为新的传入数据没有问题,这不会给您带来问题。但是,正如您所知,备份表将在您的命令之后拥有更多数据,因为它没有删除它以前的数据
答案 1 :(得分:2)
为什么不首先删除 tableBackup 中的所有数据,然后 INSERT tableOriginal 中的数据到 tableBackup
DELETE FROM tableBackup
INSERT INTO tableBackup(SELECT * FROM tableOriginal)
为什么我们需要先删除? 因为如果我们要将唯一数据插入tableBackup, 下次我们插入它将不会执行,因为我们将插入/添加一些已存在的数据..
希望你得到我想说的话。