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