首页 >数据库 >mysql教程 >如何检索 PostgreSQL 中每个类别的最大日期 ID?

如何检索 PostgreSQL 中每个类别的最大日期 ID?

Linda Hamilton
Linda Hamilton原创
2025-01-03 01:58:38422浏览

How to Retrieve the Maximum Date ID for Each Category in PostgreSQL?

在 PostgreSQL 中检索按类别分组的最大日期 ID

在数据库操作中,经常需要根据特定条件检索记录。其中一项任务涉及为给定数据集中的每个类别选择具有最大日期的 ID。这可以在 PostgreSQL 中使用 DISTINCT ON 子句有效地实现。

考虑以下示例数据:

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 具有最大日期类别,您可以使用以下查询:

SELECT DISTINCT ON (category)
       id  -- , category, date  -- any other column (expression) from the same row
FROM   tbl
ORDER  BY category, date DESC;

解释:

  • DISTINCT ON (category): 此子句确保消除重复的类别,从而使我们选择第一个满足排序的唯一类别criteria.
  • date DESC: 这种降序排序确保首先检索每个类别中具有最大日期的记录。

此查询的结果将是:

7
2
6

请注意,DISTINCT ON 在以下情况下特别有用:存在具有相同最大日期的多个记录。在这种情况下,它提供了一种为每个类别选择第一个唯一记录的方法。

以上是如何检索 PostgreSQL 中每个类别的最大日期 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn