删除表中的行,但指定的数字(限制行数)除外

时间:2014-07-02 09:43:07

标签: mysql sql

如何删除MYSQL表中的所有行(200万行),保持例如。最新的100。

选择我想要保留的内容的查询是:

 SELECT id FROM mytable ORDER by date DESC LIMIT 100;

所以我需要一个查询来删除除了在此查询中选择的所有行。使用where in加快ID列表的速度似乎太过分了。

3 个答案:

答案 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
; 
相关问题