2011-09-25 153 views
1

此問題似乎需要多次解答。但是沒有一個符合我需要的標準。將數據從一個表移動到另一個表

是否可以選擇(並將它們插入到另一個表中)並從Mysql中的原始表中刪除行而不運行選定的條件兩次?而我認爲,應該有一個解決方案

INSERT INTO main (SELECT * FROM temp WHERE age > 30) 
DELETE FROM cache WHERE age > 30 
一個非常複雜和長時間運行的查詢的查詢「比賽的一部分」

但是將被執行兩次,:

例如,我可以這樣做刪除選定的項目,因爲你已經取回了它們。

我的問題,這是可能的,如果是這樣。怎麼樣?

回答

0

不,你不能那樣做。

如果您擔心作業之間表格的完整性,則應該使用事務。

+0

我最關心的是性能。查詢執行的時間很長。而且不得不執行兩次使它更長。 – Matthijn

+0

那麼,如果它是** trul **真的很複雜(比你的初始例子更復雜),那麼確保你有一個索引,你想刪除哪個列,然後分解你的查詢到三個查詢。三個快速查詢,可能比兩個排水軟件更軟。只要確保你索引正確,一切都應該沒問題。 – Layke

相關問題