我有一个包含1000条记录的数据库。我正在尝试创建一条SQL语句,因此如果记录的数量超过1000,那么最旧的记录将被删除(即,超过1000的新记录将‘替换’最旧的记录)。我使用的是SQLite,但我假设常用的SQL语法适合这里。
发布于 2010-09-08 19:16:21
如果您使用自动增量字段,则可以很容易地编写以下代码来删除最旧的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)发布于 2010-09-08 19:17:19
假设您的表有一个主键和一个带有时间戳的列,该列指示插入记录的时间),您可以使用如下行的查询
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)发布于 2013-11-08 05:03:01
对于删除除第一条记录(最小/最大id)之外的所有记录,您可以使用:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @lshttps://stackoverflow.com/questions/3667085
复制相似问题