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