MySQL - 将记录复制到另一个表并删除现有表

时间:2011-09-14 15:11:30

标签: mysql insert

我正在尝试在一个sql语句中处理以下内容 - 我想将记录数复制到存档表中,然后立即从主表中删除现有的记录。

类似的东西:

INSERT INTO `table_archive` 
SELECT * FROM `table_main`
WHERE `id` IN (1, 2, 3, 4)
REMOVE FROM `table_main` WHERE `id` IN (1, 2, 3, 4)

它基本上就像将记录从一个表切割并粘贴到另一个表中。

显然上面的陈述正是我想要实现的 - 任何想法是否可以实现,以及它是什么样的SQL语句?

3 个答案:

答案 0 :(得分:3)

如上所述,您需要使用多个DML命令:

START TRANSACTION;
INSERT INTO `table_archive`  SELECT * FROM `table_main` WHERE `id` IN (1, 2, 3, 4); 
DELETE`table_main` WHERE `id` IN (1, 2, 3, 4); 
COMMIT;

请参阅:http://dev.mysql.com/doc/refman/5.0/en/commit.html

答案 1 :(得分:1)

不,您不能在单个查询中执行此操作。但是,您可以尝试在事务中执行此操作,以便将其作为单个查询进行处理。要么一切都成功,要么根本不成功。

这假设您的表是InnoDB类型。 MyISAM不支持交易。

答案 2 :(得分:1)

根本不可能。单独执行DELETE并将整个事物包装在事务中(如果使用支持事务的语言,而不是我不确定支持事务的MYSQL控制台)。