2013-10-23 41 views
1

我有新的数据一直进入应用程序,所以我想限制一个表中的行数为100个记录。我将其描述为一个FIFO队列。无论何时出现新数据(每次只有几行),表格“底部”的旧数据将被刷新并删除。由于它是先进先出,我不想手动执行排序,然后删除,然后插入。我想一定有廉价的方法来做到这一点,对吧? 感谢Android sqlite,限制数据库中的行数

+1

请解释你到目前为止尝试过的。 – Szymon

+0

@Symmon我还没有实现,但正如我上面所说的,简单的方法是:在插入之前,按日期查询所有数据,然后删除最旧的记录,然后插入旧数据和新数据。但我想这个并不是一种有效的方法。 –

回答

1

这样的查询会显示所有recors,最新一:

SELECT * 
FROM MyTable 
ORDER BY Date DESC -- or some autoincrementing ID column 

有偏移条款,你可以跳过第一个记录。 这意味着你得到所有记录除了前100分的,也就是说,你应删除这些记录:

SELECT * 
FROM MyTable 
ORDER BY Date DESC 
LIMIT -1 OFFSET 100 

然后,您可以使用此子查询实际删除记录:

DELETE FROM MyTable 
WHERE ID IN (SELECT ID 
      FROM MyTable 
      ORDER BY Date DESC 
      LIMIT -1 OFFSET 100)