如何在mysql中删除旧行?

时间:2017-02-03 13:40:38

标签: mysql

我正在mysql数据库中创建一个日志,我只需保留最新的100条记录并删除旧记录。我已经尝试过THIS问题的解决方案,但这似乎对我不起作用。

我的数据库表包含以下列: 约会时间 温度 湿度 PH值

我不想使用timestamp方法,因为我需要保留固定数量的记录。这可以在mysql中完成吗?

4 个答案:

答案 0 :(得分:1)

试试这个:

Delete from table t
where (Select count(*) from table 
      where datetime > t.DateTime) > 100

答案 1 :(得分:1)

这是解决方案。

DELETE FROM mytable WHERE id NOT IN (SELECT id FROM mytable ORDER BY id DESC LIMIT 100)

内部选择选择除最新100条记录之外的所有内容(假设id为自动增量),并使用NOT IN语句将它们排除在删除中。

如果datetime的有效顺序,您也可以使用datetime而不是ID。

答案 2 :(得分:0)

如果您的表有一个主键假设p_id,那么您可以使用以下查询

DELETE FROM my_table WHERE p_id NOT IN (SELECT p_id FROM my_table ORDER BY id DESC LIMIT 100);

答案 3 :(得分:0)

没有其他列作为日期字段来查找最旧的行,但您可以使用LIMIT子句说明要删除的行数,对于最早的100行,要删除多少行:

DELETE FROM table ORDER BY `datetime` DESC LIMIT 100;