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

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

Linda Hamilton
发布: 2024-12-31 03:03:14
原创
190 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板