2011-07-08 61 views
1

我有一個產品的大型數據庫,每天我都希望運行一個將active ='1'的行移動到新表中並刪除原始行的腳本。將行遷移到新表中,然後刪除它們

但我似乎無法找到適當的Mysql命令來完成遷移。

如果有人能夠說明情況,那將是非常好的。

非常感謝

回答

0

你應該能夠完成這個以下

CREATE TABLE NewTable LIKE OldTable; 

INSERT INTO NewTable 
SELECT * FROM OldTable WHERE Active = 1; 

DELETE FROM OldTable WHERE Active = 1; 

正如好奇,什麼是這樣做的呢?如果你擔心模糊行,你可以做刪除如下

DELETE OldTab FROM OlTable AS OldTab 
INNER JOIN NewTable AS NewTab 
ON OldTab.ID = NewTab.ID 
+1

小心模糊的邊緣...新行可能會在這兩個語句之間插入active = 1,從而產生不希望的結果。 – Randy

+0

是的,如果你擔心你可以在插入和刪除期間鎖定表格。儘管我從舊桌子被丟棄的問題來看。 – Kibbee

0

沒有任何細節,這裏是你會做什麼:

創建一個INSERT語句到新表從AS SELECT舊錶WHERE活動= 1。

創建DELETE語句,該語句從第一個表中刪除它在第二個表中找到的任何行。

commit;

+0

如果有代碼,我會給它一個+1 –

+0

@Clodoaldo - 如果Randy鍵入OP的代碼,你會給它一個+2;) – KevinDTimm

相關問題