sql - 如何从 postgresql 数据库表中删除不必要的记录
问题描述
我有一张包含我的表格版本的表格。
version_id transaction entity_id date
--------------------------------------------------------------
1 insert 1 11.11.2019 13:15:04
2 update 1 11.11.2019 13:16:04
3 insert 8 11.11.2019 13:17:04
4 update 1 11.11.2019 13:18:04
5 update 8 11.11.2019 13:19:04
6 update 1 11.11.2019 13:20:04
7 update 1 11.11.2019 13:21:04
8 delete 1 11.11.2019 13:22:04
例如实体 id 1,我需要 1,7,8 个版本号。不需要2,4,6版本号,所以我可以删除它们。实际上,我需要最后一次插入、更新、删除实体的事务版本号。其他将删除。
我可以通过这种方式删除所有不必要的更新 id 吗?
解决方案
我需要一个实体的最后插入、更新、删除事务版本号。
您可以使用以下方法删除行:
delete from version v
where v.version_id < (select max(v2.version_id)
from versions v2
where v2.entity_id = v.entity_id and
v2.transaction = v.transaction
);
推荐阅读
- scala - 由于缺少 repo,安装 SBT 的替代入口点失败
- aws-lambda - 限制 lambda 只使用一些数据中心?
- mysql - 获取 MySQL 中的上一条记录,按值排序,而不是按索引(MySQL 5.6.40)
- android - RecyclerView DynamicAdapter - 按以下方式分组的列表
- dart - ExpansionTile 下 Flutter ListTile
- android - 是否可以在 Worker 中使用 WebView?
- javascript - express-validator,validationErrors 是一个空对象
- c# - Swagger 没有生成 swagger.json
- ruby-on-rails - 如何在rails活动管理索引页面的列表项中显示模型的多个属性项?
- xml - 如何编写 XSLT 以从元素中取出元素?