2011-07-18 51 views
0

我想修剪一個現有的MySQL ISAM表,一千萬條記錄。修剪MySQL表

什麼是SQL語句刪除最後500萬條記錄?這只是一個日誌表,不會因刪除記錄而造成損害。

+0

你如何確定哪些記錄是「最後」? –

回答

1
delete from table where id >= (select * from (select id from table order by id limit 4999999,1) as t) 
+0

夥計們,我將如何鏈接這2個呢? SELECT id,DeviceReportedTime FROM SystemEvents WHERE ID <(select * from(從SystemEvents按ID限制10,1順序選擇ID)as t); 從SystemEvents中選擇MAX(ID); – Cmag

1

您可以使用ORDER BY和LIMIT與DELETE僅影響有限數量的行。你會得到'最後'500萬的方式取決於你有什麼確定記錄年齡,並在你的ORDER BY中使用。

0

SELECT * FROM ???(您選擇表名)ORDER BY ?????? LIMIT 5000000

這裏??? =你的表名,和??????是你排序你的表的方式。所以,如果你有某種日期或數量的條目進行排序。
http://www.w3schools.com/sql/

我用SELECT在我上面的例子,所以你可以先嚐試一下,如果它工作正常!如果它不工作,更改選擇進入刪除:) 如果它不工作,比你去嘗試別的方法:)

0

排序這是否工作

DELETE FROM tableA ORDER BY some_indexed_column DESC LIMIT 1000000