我一直有新数据进入应用程序,所以我想将表中的行数限制为 100 条记录。我将其描述为 FIFO 队列。每当有新数据(一次只有几行)进入时,表“底部”的旧数据就会被清除并删除。由于它是先进先出,我不想手动执行排序,然后删除,然后重新插入。我想必须有便宜的方法来做到这一点,对吧?谢谢
问问题
1474 次
1 回答
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)
于 2013-10-23T07:52:50.180 回答