sql - 当主题超过提供的限制时,查询删除主题的第一个添加元素
问题描述
我有一个有 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
);
如果没有,您可以使用自动递增的主键。
推荐阅读
- javascript - 如何从数组和映射函数动态初始化打字稿中的对象?
- javascript - 为什么 Promise.all 返回 [ [Function: test1], [Function: test2] ]
- amazon-web-services - AWS Crawler 无法读取所有列
- c++ - 有没有办法生成一个哈希函数,它返回签名 long long 类型的哈希码?
- html - 如何在 CSS 样式之上获取此文本
- django - 如何在同一服务器/域上运行两个单独的 django 实例?
- electron - 电子生成器失败:没有生成“对象”文件
- php - woocommerce_thankyou 挂钩函数的致命错误问题
- r - 右 | 添加索引号
- java - 将包含多边形坐标数据的json数据保存到mysql数据库中