0

我正在努力在 Python 中实现 sqlite。这就是让我难过的地方。

给定一个数据结构:

id archiveSeconds archiveSize
-- -------------- -----------
13 1234567        100
34 1234568        100
13 1234568        100
24 1234570        100

...

我想根据archiveSeconds删除除特定ID的最近n条记录之外的所有记录,并保持所有其他记录不变。

我能想到的最接近的事情是:

delete from Archives where id='13' not in (select id from Archives order by archiveSeconds desc limit 15);

但这会清空所有记录的表。我想我需要嵌套几个 select 语句才能做到这一点,但我迷失了 sql 语句来完成这项工作。

4

1 回答 1

1

两个变化。首先,您不想比较id子查询中的 s,而是要比较时间。其次,您要过滤给定 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。这是来自您的原始查询。

于 2013-06-21T20:26:29.623 回答