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


Storing only the last 500 records for a user in a MySQL database

Howdie,

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

我存储的当前字段是

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

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

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

DELETE FROM yourtable
WHERE timestampfield > (NOW() - INTERVAL 1 MONTH)

如果你在auto_incremented ID中没有任何"间隙",你可以做一个非常简单(而且非常容易失败)的事情:

INSERT INTO ....  <--add new record
DELETE FROM yourtable WHERE (id < (INSERT_ID() - 500))

但这将是非常不可靠的。