从一个表中删除记录并插入到另一个表中

Posted

技术标签:

【中文标题】从一个表中删除记录并插入到另一个表中【英文标题】:Delete Record from one table and insert into another table 【发布时间】:2015-10-25 15:15:57 【问题描述】:

我有带有字段 ID 和日期的表 test1。带有主键的 ID,在另一个具有 ID 和名称字段的表 test2 中被引用。这里 Id 引用了来自 test1 的 Id。

我想从 test1 和 test2 中删除最近 3 个月的数据,并将删除的数据插入到表 test3(来自 test1)和 test4(来自 test2)中。

【问题讨论】:

奇怪的是,您只想将 2 个表中的数据存档在另外 1 个表中。为什么不是两个? @trincot 是的,我想将两个表的数据都保存到另外两个中,因为 test1 数据将进入 test3,而 test2 数据将进入 test 4。 【参考方案1】:

假设表test3的结构与test1相同,test4的结构与test2相同,执行这些语句。

INSERT INTO test3
SELECT * FROM test1
WHERE Date < dateadd(month, -3, GETDATE());

INSERT INTO test4
SELECT * FROM test2
WHERE ID IN (SELECT ID FROM test3);

DELETE FROM test2
WHERE ID IN (SELECT ID FROM test3);

DELETE FROM test1
WHERE ID IN (SELECT ID FROM test3);

不要忘记提交更改。如果您为此创建脚本以定期启动,请确保在事务块中执行这些语句,并在末尾带有 COMMIT TRANSACTION。

【讨论】:

以上是关于从一个表中删除记录并插入到另一个表中的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DbVisualizer 中删除表中的重复行

自动从 Mysql 表中删除的记录

使用php脚本检查一个表中的重复记录并重复记录插入到另一个表中

如何从表中选择记录并插入另一个表?

从一个表中选择并插入到另一个表中

SQL语句 怎么把从一个表中查出来数据插入到另一个表中