我有一个有列的表
_id = 主键自动增量
标题 = 字符串
时间戳=长
我的表中有 35 个条目。我的表在任何给定时间只能包含 25 个条目。所以这意味着从我的桌子上敲掉 10 个额外的条目。
此外,35 个条目应首先按时间戳排序,最后 10 个条目应删除,以便我只有 25 个最近的条目。
可以请一些人帮助我进行删除查询,该查询首先按时间戳对条目进行排序并仅保留 25 个条目,删除其余条目。
我有一个有列的表
_id = 主键自动增量
标题 = 字符串
时间戳=长
我的表中有 35 个条目。我的表在任何给定时间只能包含 25 个条目。所以这意味着从我的桌子上敲掉 10 个额外的条目。
此外,35 个条目应首先按时间戳排序,最后 10 个条目应删除,以便我只有 25 个最近的条目。
可以请一些人帮助我进行删除查询,该查询首先按时间戳对条目进行排序并仅保留 25 个条目,删除其余条目。
DELETE FROM MYTABLE WHERE _id NOT IN
(SELECT _id from MYTABLE ORDER BY timestamp DESC LIMIT 25)
保留最新的 25 个条目。
听起来您需要 SQL 中的 FIFO 队列。仅存储最近的 25 个(或任何其他数量的)项目的表。
如果是这样,那么这是一个解决方案:
http://www.xaprb.com/blog/2007/01/11/how-to-implement-a-queue-in-sql/
替代 radashk 方法:您可以在每次插入新记录时删除一个(最旧的)记录,可以在插入时在 DB 表触发器中完成:
DELETE FROM MYTABLE WHERE timestamp = MIN(timestamp);
此语句可以包含在记录计数检查或其他内容中以确保您维护您的最低记录数。