在處理資料時,通常需要從各種資料集中提取特定資訊。對於 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 |
Postgres 的DISTINCT ON 運算子可以有效地處理這種情況:
select distinct on (id) id, date, another_info from the_table order by id, date desc;
為了跨資料庫相容性,視窗函數如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中文網其他相關文章!