首页 > 数据库 > mysql教程 > 如何高效地检索 PostgreSQL 中每个唯一标识符的最后一行?

如何高效地检索 PostgreSQL 中每个唯一标识符的最后一行?

DDD
发布: 2024-12-17 14:59:10
原创
392 人浏览过

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

Postgresql:提取每个唯一标识符的最后一行

在 PostgreSQL 中,您可能会遇到需要从与数据集中每个不同标识符关联的最后一行。考虑以下数据:

  id 日期 another_info<br> 1 2014-02-01 kjkj<br> 1 2014-03-11 ajskj<br> 1 2014-05-13 kgfd<br> 2 2014-02-01 SADA<br> 3 2014-02 -01 sfdg<br> 3 2014-06-12 fdsA<br>

要检索数据集中每个唯一 id 的最后一行信息,您可以使用 Postgres 的高效 unique on 运算符:

select distinct on (id) id, date, another_info
from the_table
order by id, date desc;
登录后复制

此查询将返回以下内容输出:

;  id date another_info<br> 1 2014-05-13 kgfd<br> 2 2014-02-01 SADA<br> 3 2014-06-12 fdsA<br>
登录后复制

如果您愿意跨数据库解决方案可能会牺牲一点性能,您可以使用窗口函数:

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 中每个唯一标识符的最后一行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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