2011-09-25 116 views
1

此问题似乎需要多次解答。但是没有一个符合我需要的标准。将数据从一个表移动到另一个表

是否可以选择(并将它们插入到另一个表中)并从Mysql中的原始表中删除行而不运行选定的条件两次?而我认为,应该有一个解决方案

INSERT INTO main (SELECT * FROM temp WHERE age > 30) 
DELETE FROM cache WHERE age > 30 
一个非常复杂和长时间运行的查询的查询“比赛的一部分”

但是将被执行两次,:

例如,我可以这样做删除选定的项目,因为你已经取回了它们。

我的问题,这是可能的,如果是这样。怎么样?

回答

0

不,你不能那样做。

如果您担心作业之间表格的完整性,则应该使用事务。

+0

我最关心的是性能。查询执行的时间很长。而且不得不执行两次使它更长。 – Matthijn

+0

那么,如果它是** trul **真的很复杂(比你的初始例子更复杂),那么确保你有一个索引,你想删除哪个列,然后分解你的查询到三个查询。三个快速查询,可能比两个排水软件更软。只要确保你索引正确,一切都应该没问题。 – Layke

相关问题