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