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

PostgreSQL中如何为每个类别选择最大日期的ID?

Barbara Streisand
发布: 2024-12-27 18:28:11
原创
767 人浏览过

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

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

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