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 的最後一行信息,您可以使用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中文網其他相關文章!