我正在mysql数据库中创建一个日志,我只需保留最新的100条记录并删除旧记录。我已经尝试过THIS问题的解决方案,但这似乎对我不起作用。
我的数据库表包含以下列: 约会时间 温度 湿度 PH值
我不想使用timestamp方法,因为我需要保留固定数量的记录。这可以在mysql中完成吗?
答案 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;