首页 >数据库 >mysql教程 >如何检索 PostgreSQL 中每个唯一 ID 的最后一行?

如何检索 PostgreSQL 中每个唯一 ID 的最后一行?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-01 09:06:11199浏览

How to Retrieve the Last Row for Each Unique ID in PostgreSQL?

检索 PostgreSQL 中每个 ID 的最后一行

在处理数据时,通常需要从各种数据集中提取特定信息。对于 PostgreSQL,用户可能会遇到需要获取每个唯一 ID 的最新记录的场景。

场景

考虑下表:

id date another_info
1 2014-02-01 kjkj
1 2014-03-11 ajskj
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-02-01 sfdg
3 2014-06-12 fdsA

目标

目标是提取新的每个唯一 ID 的最后一行数据表:

id date another_info
1 2014-05-13 kgfd
2 2014-02-01 SADA
3 2014-06-12 fdsA

解决方案 1:使用 Postgres 的 DISTINCT ON 运算符

Postgres 的 DISTINCT ON 运算符可以有效地处理这种情况:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;

解决方案 2:使用窗口函数

为了跨数据库兼容性,窗口函数如row_number() 可以使用:

select id, date, another_info
from (
  select id, date, another_info, 
         row_number() over (partition by id order by date desc) as rn
  from the_table
) t
where rn = 1
order by id;

基准通常表明窗口函数方法比子查询更快。

以上是如何检索 PostgreSQL 中每个唯一 ID 的最后一行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn