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

如何檢索 PostgreSQL 中每個唯一 ID 的最後一行?

Mary-Kate Olsen
發布: 2025-01-01 09:06:11
原創
220 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板