我正在努力克服Python中的sqlite。这就是让我难过的原因。
给定数据结构:
id archiveSeconds archiveSize
-- -------------- -----------
13 1234567 100
34 1234568 100
13 1234568 100
24 1234570 100
...
我想根据archiveSeconds删除除最近n个特定ID的n条记录,并保留所有其他记录的完整性。
我能想出的最接近的是:
delete from Archives where id='13' not in (select id from Archives order by archiveSeconds desc limit 15);
但这会清空所有记录的表格。我想我需要嵌套几个select语句才能做到这一点,但是我在sql语句中迷失了以完成这项工作。
答案 0 :(得分:1)
两个变化。首先,您不想比较子查询中的id
,您想要比较时间。其次,您希望过滤给定id的子查询:
delete from Archive
where id='13' and
ArchiveSeconds not in (select ArchiveSeconds
from Archives
where id = '13'
order by archiveSeconds desc
limit 15);
我注意到一个表名为Archive
,另一个表名为Archives
。这来自您的原始查询。