我有一个包含1000条记录的数据库.我正在尝试创建一个SQL语句,因此如果记录数增长到1000以上,则删除最旧的记录(即1000以上的新记录'替换'最旧的记录).我正在使用SQLite,但我认为通常的SQL语法适合这里.
Ale*_*rMP 47
如果使用自动增量字段,则可以轻松编写此字段以删除最早的100条记录:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
Run Code Online (Sandbox Code Playgroud)
或者,如果不存在此类字段,请使用ROWID:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
Run Code Online (Sandbox Code Playgroud)
或者,只留下最新的1000条记录:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Run Code Online (Sandbox Code Playgroud)