postgresql 如何删除数据的旧版本并返回唯一的最新版本

n9vozmp4  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(208)

我是SQL查询的新手,有一个案例我无法处理。让我们假设我有一个如下的表;

id | document_name   | country   | major_version   | minor_version |
1  | policy1         |     DE    |       1         |       0         |
2  | policy2         |     DE    |       1         |       0         |
3  | policy1         |     DE    |       1         |       1         |
4  | policy1         |     DE    |       2         |       0         |
5  | policy2         |     DE    |       1         |       1         |
6  | policy2         |     IT    |       1         |       0         |
7  | policy2         |     IT    |       1         |       1         |

我只想回来;

id | document_name   | country   | major_version   | minor_version   |
4  | policy1         |     DE    |       2         |       0         |
5  | policy2         |     DE    |       1         |       1

|
国家(地区)为'DE'的文档的最新版本。应运行哪种查询?
我尝试distinct on document_name,但它没有返回文档的最新版本。

v2g6jxz6

v2g6jxz61#

我尝试distinct on document_name,但它没有返回文档的最新版本。
如果使用正确的order by子句,distinct on在Postgres中是一个很好的方法:

select distinct on (document_name) t.*
from mytable t
order by document_name, major_version desc, minor_version desc

相关问题