如何删除MYSQL表中的所有行(200万行),保持例如。最新的100。
选择我想要保留的内容的查询是:
SELECT id FROM mytable ORDER by date DESC LIMIT 100;
所以我需要一个查询来删除除了在此查询中选择的所有行。使用where in
加快ID列表的速度似乎太过分了。
答案 0 :(得分:1)
DELETE FROM mytable WHERE date < (SELECT date FROM mytable ORDER BY date DESC LIMIT 100,1)
试试
它应删除所有记录,但最后100个条目将基于date
列
编辑:拼写错误
答案 1 :(得分:1)
也许你可以尝试这样的事情:
DELETE FROM mytable
WHERE id NOT IN (SELECT id FROM mytable ORDER by date DESC LIMIT 100)
答案 2 :(得分:0)
您可以使用预准备语句。 我测试了MySQL,它的工作原理。
PREPARE row_del FROM 'DELETE FROM mytable LIMIT ?'
;
SELECT @row_num := count(*) - 100
FROM mytable
;
EXECUTE row_del USING @row_num
;