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



我是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,但它没有返回最新版本的文档。

我尝试distinct on document_name,但它没有返回最新版本的文档。

distinct on在Postgres中是一个很好的方法,如果您使用正确的order by子句:

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

相关内容

最新更新