在PostgreSQL 中使用DISTINCT ON 選擇按類別分組的最大日期的ID
要選擇每個類別中具有最大日期的id , Postgres 提供了一個強大的功能,稱為DISTINCT ON。以下是實現此目的的查詢:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON 根據指定列區分行,並根據排序順序過濾後續行。透過以每個類別中日期的降序對行進行排序,DISTINCT ON 提供每個類別的最大日期。
注意: 確保日期列不為 NULL,因為 NULL 值可能會導致影響排序順序。如有必要,您可以添加 NULLS LAST 來處理 NULL 值。
DISTINCT ON 提供簡單性和效率。其性能對於較小的數據集特別有效。對於每個類別包含大量行的較大資料集,替代方法可能更合適,例如「相關堆疊溢位問題」部分中提到的方法。
以上是如何使用DISTINCT ON高效率地選擇PostgreSQL中每個類別的最大日期ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!