我有一个包含1000条记录的数据库。我试图创建一条SQL语句,以便如果记录数增加到1000条以上,则删除最旧的记录(即1000条以上的新记录将“替换”最旧的记录)。我正在使用SQLite,但我认为通常的SQL语法适合此处。
如果您使用自动递增字段,则可以轻松编写此字段以删除最早的100条记录:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
或者,如果不存在此类字段,请使用ROWID:
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)