Php 在MySQL数据库中仅存储用户的最后500条记录

Php 在MySQL数据库中仅存储用户的最后500条记录,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,你好 我正在尝试编写一个系统,根据测试对其用户进行预测。对于其中的一部分,我只希望数据库存储最近的500个值 我正在存储的当前字段是 ID (Auto increment) USERID (the users unique ID) SCORE(an integer) 在理想情况下,当一个唯一的用户在数据库中获得500条记录时,我希望系统删除最旧的行。有没有一种简单的方法可以在PHP中实现自动化,而不会使代码变得非常繁重 您必须存储一个日期/时间字段,以便确定超过1个月的时间,然后它变得非常简单

你好

我正在尝试编写一个系统,根据测试对其用户进行预测。对于其中的一部分,我只希望数据库存储最近的500个值

我正在存储的当前字段是

ID (Auto increment)
USERID (the users unique ID)
SCORE(an integer)

在理想情况下,当一个唯一的用户在数据库中获得500条记录时,我希望系统删除最旧的行。有没有一种简单的方法可以在PHP中实现自动化,而不会使代码变得非常繁重

您必须存储一个日期/时间字段,以便确定超过1个月的时间,然后它变得非常简单:

DELETE FROM yourtable
WHERE timestampfield > (NOW() - INTERVAL 1 MONTH)
如果自动递增的ID中没有任何“间隙”,则可以执行一个非常简单且非常容易失败的操作:

INSERT INTO ....  <--add new record

DELETE FROM yourtable WHERE (id < (INSERT_ID() - 500))

但是这是非常不可靠的。

这会不会导致问题,因为每个帖子的自动增量id都是一致的,但用户可能会更改?。。。如果克里斯有20张唱片,他在20天前加的,而萨姆有500张唱片,她今天加的,克里斯的唱片会被丢弃吗?。有可能让500个限制依赖于用户吗?这会让它变得更加困难,我建议您添加时间戳字段,只需添加一个。。。userId='Chris'到delete查询。我想我会放弃使用一个月的想法,只关注500条记录,因为一些用户可能会去度假,一个月内不使用系统。虽然我不知道如何计数记录并在你点击魔法500后分离出最旧的记录:-s最旧的记录也会有最低的ID号。MySQL不允许直接执行此操作,但有一些解决方法,比如从yourtable中删除,其中id不在select id FROM yourtable order by id desc limit 500和userid=。。。和userid=。。。会搞定的。很有趣。。。我认为这可能是最好的方法。。。干杯,伙计!我是一个从不删除任何思想流派的人。为什么要删除这些内容?尤其是当你用它做模特的时候?你所有的模型都会在你没有意识到的情况下发生微妙的变化,你将不得不不断地重新考虑。如果在一年内,您想保留1000条记录,但由于删除了所有内容而无法保留,会发生什么情况?我将分两个单独的步骤执行此操作:1在使用此数据的查询中使用limit,以便它们最多考虑500条记录。2如果您真的愿意,每隔一段时间运行一批,为每个人清除无关的记录@本可能是对的:为什么要删除它?限制: