如何解决当主题超过提供的限制时,查询删除第一个添加的元素
我有一个包含 5 列的表格,其中一列是 topic。当我按主题分组时,我需要一个查询来删除我首先添加的行(最旧的)。
我有一个 id 列被设置为主键,但是增量(虽然它都是唯一的)并不可靠,因为我的 python 代码填充数据的方式。
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 举报,一经查实,本站将立刻删除。