一尘不染

从数据库中删除最旧的记录

sql

我有一个包含1000条记录的数据库。我试图创建一条SQL语句,以便如果记录数增加到1000条以上,则删除最旧的记录(即1000条以上的新记录将“替换”最旧的记录)。我正在使用SQLite,但我认为通常的SQL语法适合此处。


阅读 149

收藏
2021-03-17

共1个答案

一尘不染

如果您使用自动递增字段,则可以轻松编写此字段以删除最早的100条记录:

DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)

或者,如果不存在此类字段,请使用ROWID

DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)

或者,仅保留最新的1000条记录:

DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
2021-03-17