Android sqlite,限制数据库中的行数

时间:2013-10-23 01:51:51

标签: android sqlite android-sqlite

我有新数据一直进入应用程序,因此我想将表中的行数限制为100条记录。我会将其描述为FIFO队列。每当有新数据(一次只有几行)进入时,表格“底部”的旧数据将被刷新并删除。既然它是FIFO,我不想手动执行排序,然后删除,然后重新插入。我想必须有便宜的方法来做到这一点,对吧? 感谢

1 个答案:

答案 0 :(得分:1)

这样的查询将显示所有的回忆,最新的:

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

使用OFFSET子句,您可以跳过第一个记录。 这意味着你得到的所有记录,除了前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)