在PostgreSQL 中選擇按類別分組的最大日期ID
要擷取PostgreSQL 中每個類別的最大日期ID,我們可以使用強大的DISTINCT ON 子句,它是標準DISTINCT 指令的擴充。此子句允許我們根據特定條件聚合數據,同時保留各個行的唯一性。
考慮以下範例資料:
id category date 1 a 2013-01-01 2 b 2013-01-03 3 c 2013-01-02 4 a 2013-01-02 5 b 2013-01-02 6 c 2013-01-03 7 a 2013-01-03 8 b 2013-01-01 9 c 2013-01-01
每個行選擇具有最大日期的ID使用DISTINCT ON 的類別語法為:
SELECT DISTINCT ON (category) id FROM tbl ORDER BY category, date DESC;
結果輸出將be:
id 7 2 6
此查詢首先按類別升序對資料進行排序,然後按日期降序排序。然後,DISTINCT ON 子句確保對於每個不同類別,僅顯示具有最大日期的行,從而產生所需的輸出。
如果日期列允許 NULL 值,則包含 NULL 很重要LAST 子句確保 NULL 值排在最後。例如:
SELECT DISTINCT ON (category) id FROM tbl ORDER BY category, date DESC NULLS LAST;
以上是PostgreSQL中如何為每個類別選擇最大日期的ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!