用于删除按时间排序的条目的SQL查询

时间:2012-08-04 08:56:16

标签: android sql sqlite android-contentprovider

我有一个包含列

的表
  

_id =主键自动增量

     

Title = String

     

timestamp = long

我的桌子上有35个条目。我的表在任何给定时间只能包含25个条目。所以这意味着从我的桌子上删除10个额外的条目。

另外35个条目应首先按时间戳排序,最后10个条目应删除,以便我最近只有25个条目。

有些人可以帮我解决一个删除查询,该查询首先按时间戳排序,只保留25个条目,删除其余条目。

3 个答案:

答案 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);
此声明可以包含在记录计数检查或其他内容中,以确保您保持最低记录数。