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