我有一個產品的大型數據庫,每天我都希望運行一個將active ='1'的行移動到新表中並刪除原始行的腳本。將行遷移到新表中,然後刪除它們
但我似乎無法找到適當的Mysql命令來完成遷移。
如果有人能夠說明情況,那將是非常好的。
非常感謝
我有一個產品的大型數據庫,每天我都希望運行一個將active ='1'的行移動到新表中並刪除原始行的腳本。將行遷移到新表中,然後刪除它們
但我似乎無法找到適當的Mysql命令來完成遷移。
如果有人能夠說明情況,那將是非常好的。
非常感謝
你應該能夠完成這個以下
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
沒有任何細節,這裏是你會做什麼:
創建一個INSERT語句到新表從AS SELECT舊錶WHERE活動= 1。
創建DELETE語句,該語句從第一個表中刪除它在第二個表中找到的任何行。
commit;
如果有代碼,我會給它一個+1 –
@Clodoaldo - 如果Randy鍵入OP的代碼,你會給它一個+2;) – KevinDTimm
小心模糊的邊緣...新行可能會在這兩個語句之間插入active = 1,從而產生不希望的結果。 – Randy
是的,如果你擔心你可以在插入和刪除期間鎖定表格。儘管我從舊桌子被丟棄的問題來看。 – Kibbee