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

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

Mary-Kate Olsen
发布: 2025-01-01 09:06:11
原创
190 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板