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

如何在 PostgreSQL 中查找每个类别的最大日期 ID?

Linda Hamilton
Linda Hamilton原创
2024-12-31 03:03:14213浏览

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

在 PostgreSQL 中选择按类别分组的最大日期 ID

为了确定表中每个类别的最大日期 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中文网其他相关文章!

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