為了確定表中每個類別的最大日期 id,PostgreSQL 提供了合適的方法。讓我們考慮一下範例資料:
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 |
為了達到預期的結果,我們可以利用 PostgreSQL 的 DISTINCT ON 子句。這個子句允許我們根據指定的表達式選擇唯一的行,並按另一列對結果進行分組。在本例中,我們將按類別對行進行分組,並選擇每組中具有最大日期的不同 ID。
以下是完成此操作的查詢:
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON 子句確保僅選擇每個不同類別值的第一次出現。 ORDER BY 子句首先按類別升序(字母順序)對結果進行排序,然後按日期降序排序。此排序可確保每個類別的最新日期的行首先出現。
執行此查詢將產生以下結果:
id |
---|
7 |
2 |
6 |
這些 ID (7, 2, 6) 代表分別為類別 a、b 和 c 的最長日期。
以上是如何在 PostgreSQL 中找到每個類別的最大日期 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!