首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库中删除最旧的记录

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

Stack Overflow用户
提问于 2010-09-08 19:13:07
回答 3查看 31.4K关注 0票数 30

我有一个包含1000条记录的数据库。我正在尝试创建一条SQL语句,因此如果记录的数量超过1000,那么最旧的记录将被删除(即,超过1000的新记录将‘替换’最旧的记录)。我使用的是SQLite,但我假设常用的SQL语法适合这里。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-08 19:16:21

如果您使用自动增量字段,则可以很容易地编写以下代码来删除最旧的100条记录:

代码语言:javascript
复制
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)

或者,如果不存在这样的字段,则使用ROWID

代码语言:javascript
复制
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)

或者,只留下最新的1000条记录:

代码语言:javascript
复制
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
票数 61
EN

Stack Overflow用户

发布于 2010-09-08 19:17:19

假设您的表有一个主键和一个带有时间戳的列,该列指示插入记录的时间),您可以使用如下行的查询

代码语言:javascript
复制
delete from tableToDeleteFrom
where tablePK in 
(select tablePK 
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
票数 1
EN

Stack Overflow用户

发布于 2013-11-08 05:03:01

对于删除除第一条记录(最小/最大id)之外的所有记录,您可以使用:

代码语言:javascript
复制
SET @ls AS INT

SELECT @ls = MIN(id) FROM DATA

DELETE FROM DATA WHERE id <> @ls
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3667085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档