首页 >数据库 >mysql教程 >如何使用DISTINCT ON高效地选择PostgreSQL中每个类别的最大日期ID?

如何使用DISTINCT ON高效地选择PostgreSQL中每个类别的最大日期ID?

DDD
DDD原创
2024-12-27 17:10:17503浏览

How Can I Efficiently Select the ID with the Maximum Date for Each Category in PostgreSQL Using DISTINCT ON?

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

要选择每个类别中具有最大日期的 id, Postgres 提供了一个强大的功能,称为 DISTINCT ON。下面是实现此目的的查询:

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

DISTINCT ON 根据指定列区分行,并根据排序顺序过滤后续行。通过按每个类别中日期的降序对行进行排序,DISTINCT ON 提供每个类别的最大日期。

注意: 确保日期列不为 NULL,因为 NULL 值可能会导致影响排序顺序。如有必要,您可以添加 NULLS LAST 来处理 NULL 值。

DISTINCT ON 提供简单性和效率。其性能对于较小的数据集特别有效。对于每个类别包含大量行的较大数据集,替代方法可能更合适,例如“相关堆栈溢出问题”部分中提到的方法。

以上是如何使用DISTINCT ON高效地选择PostgreSQL中每个类别的最大日期ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

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