微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当主题超过提供的限制时,查询删除第一个添加的元素

如何解决当主题超过提供的限制时,查询删除第一个添加的元素

我有一个包含 5 列的表格,其中一列是 topic。当我按主题分组时,我需要一个查询删除我首先添加的行(最旧的)。

我有一个 id 列被设置为主键,但是增量(虽然它都是唯一的)并不可靠,因为我的 python 代码填充数据的方式。

这是一个 sqlite 数据库

DELETE FROM news where topic = "world" 

上述查询的明显问题是它会在 topic = world删除所有内容,我只想删除表中最旧的添加

解决方法

您可以使用相关子查询。您已指定“最旧”,因此我假设有某种类型的日期/时间列包含此信息:

DELETE FROM news n
    WHERE n.topic = 'world' AND
          n.datetimecol = (SELECT MIN(n2.datetimecol)
                           FROM news n2
                           WHERE n2.topic = n.topic
                          );

如果没有,您可以使用自动递增的主键。

,

和其他回答者说的一样,肯定有一些date_time列。您可以根据它使用不存在,如下所示:

DELETE FROM news n
    WHERE n.topic = 'world'
      AND not exists
         (SELECT 1 FROM news nn
           WHERE nn.topic = n.topic
             AND nn.datetimecol < n.datetimecol);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。