【发布时间】:2014-07-31 15:31:51
【问题描述】:
如何从 PostgreSQL 中的查询中获取具有最大日期的所有行?
例如,如果我得到以下行:
1, 1, '2014-05-27'
2, 2, '2014-05-26'
3, 3, '2014-05-26'
4, 4, '2014-05-25'
5, 5, '2014-05-27'
我需要得到这个结果:
1, 1, '2014-05-27'
5, 5, '2014-05-27'
只有日期最长的那些 - 但所有。 这通过在子查询中重复查询来完成:
SELECT *
FROM table
WHERE field_1 = '1'
AND date_1 = (SELECT MAX(date_1) FROM table WHERE field_1 = '1');
有没有更简单/更快的方法(无需重复查询)?
也许有HAVING 子句?
【问题讨论】:
-
HAVING 不适用于此处。它用于根据聚合值过滤结果,但您的结果集不包含聚合。
标签: sql postgresql greatest-n-per-group having-clause