首頁 >資料庫 >mysql教程 >如何有效率地檢索 PostgreSQL 中每個唯一識別碼的最後一行?

如何有效率地檢索 PostgreSQL 中每個唯一識別碼的最後一行?

DDD
DDD原創
2024-12-17 14:59:10396瀏覽

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-133 kSd 2014-02-01 SADA<br> 3 2014-02 -01 sfdg<br> 3 2014-06-12 fdsA<br>

要檢索資料集中每個唯一id 的最後一行信息,您可以使用🎜>

要檢索資料集中每個唯一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-011 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn