我正在使用MariaDB,并且希望定期从数据库中清除记录,每天仅保留数据库中的最后一条记录,因此在7天之内将只剩下7条记录。
我发现了与我想做的here类似的事情。
DELETE FROM `table` WHERE id NOT IN ( SELECT id FROM (
SELECT id
FROM `table`
ORDER BY id DESC
LIMIT 1 ) foo );
这会删除除最后一条记录以外的所有记录,但是我希望某些东西每天都会保留最后一条记录,因此我每天都有最新的记录。该解决方案不必遍历过去的一天,我可以每天半夜运行此命令来处理前一天的问题。
我有一个称为'stamp'的列,它是一个timestamp列。
尝试一次。我从表中选择了具有今天日期的所有记录,并以降序排列,并保留第一个记录(即您的情况下的最新记录),并删除其余记录。另外,由于仅选择了具有今天日期的那些记录,因此保留了前一天的记录。您可以修改日期部分以包括所需的日期。
DELETE FROM table WHERE id=(SELECT id FROM table where DATE(tableDate)=CURDATE() ORDER BY id DESC OFFSET 1) AS SUBQUERY