mysql - 保留最后 30 个值并删除其余的

标签 mysql

我有一个表,其中包含带有时间戳的用户事务。我现在想根据时间戳保留最后 30 个条目,并删除所有其余条目。

最佳答案

这种方式与DELETESELECT子查询怎么样?

DELETE FROM `table` WHERE id NOT IN (SELECT id FROM (
    SELECT id FROM `table` ORDER BY timestamp DESC LIMIT 30) sort_timestamp
);

中间子查询将帮助您跳过错误

Error: ER_NOT_SUPPORTED_YET: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

关于mysql - 保留最后 30 个值并删除其余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549552/

相关文章:

mysql - 选择行但优先考虑非 NULL 值

php - 在 php 中编辑复选框数据并在 mysql 中更新行

mysql - 从结果中选择

php - Mysql解析错误

php - 如果数据库大小接近 2GB,请更改打印输出

php - 如何在 MySQL 中的单个查询中使用 group by 检索多列计数值?

java - 使用 JDBC 从 MySQL 列获取 :Jan 01, 1970 输出

mysql - 在 SQL 中创建唯一的字符/数字字符串

mysql - SQL 更新错误 + WHERE 子句说明

mysql - 使用用户变量显示 mysql 中日期之间的数据