首頁 >資料庫 >mysql教程 >如何提取 PostgreSQL 中每個 ID 的最後一行?

如何提取 PostgreSQL 中每個 ID 的最後一行?

Patricia Arquette
Patricia Arquette原創
2024-12-28 15:02:11565瀏覽

How to Extract the Last Row for Each ID in PostgreSQL?

擷取 Postgresql 中每個 ID 的最後一行

考慮一個包含名為 id、date 和 another_info 欄位的資料集。目標是提取每個唯一 id 的最後一個資訊(行)。

為了在Postgresql 中完成此操作,通常使用兩種方法:

Distinct On Operator

Postgreon 運算符允許您指定僅傳回特定列的不同值。在這種情況下,可以如下使用運算符:

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

此查詢可確保僅傳回每個唯一 id 的最後一個實例,並按日期降序排列。

視窗函數

或者,您可以使用視窗函數來實現相同的結果。視窗函數允許您對分區的行集執行計算或聚合。在這種情況下,可以使用以下查詢:

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;

此查詢使用 row_number() 函數為每個 id 分區中的每一行分配一個序號。 where 子句過濾結果以僅包含具有最高 rn 值的行(即每個 id 的最後一行)。

以上是如何提取 PostgreSQL 中每個 ID 的最後一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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