获取每个组的最大字段的整个记录
Posted
技术标签:
【中文标题】获取每个组的最大字段的整个记录【英文标题】:Get entire record with max field for each group 【发布时间】:2021-08-14 17:53:10 【问题描述】:关于这个问题有很多答案,但没有一个会检索整个记录,而只有ID......而且我需要整个记录。
所以,我有一个由 4 列组成的表 status_changes
:
issue_id
: 变更所指的问题
id
:更改的id,只是一个SERIAL
status_from
和 status_to
实际上是问题之前的状态,以及问题当时的状态
when
这是发生这种情况的时间戳
没什么太疯狂的,但现在,我希望每个问题都有“最新的status_change
”。
我尝试了类似的方法:
select id
from change
group by issue_id
having when = max(when)
但这显然有两个大问题:
-
select 包含不在 group by 中的字段
2 不能以这种方式包含聚合函数
我想过“按when
对每个组进行排序并使用top(1)
之类的东西,但我不知道该怎么做...
【问题讨论】:
【参考方案1】:使用 PostgreSQL 的DISTINCT ON
:
SELECT DISTINCT ON (issue_id)
id, issue_id, status_from, statue_to, when
FROM change
ORDER BY issue_id, when DESC;
这将返回每个问题的第一个结果(when
最大的结果)。
【讨论】:
我刚刚在postgresql.org/docs/9.5/sql-select.html 看到这个,非常感谢以上是关于获取每个组的最大字段的整个记录的主要内容,如果未能解决你的问题,请参考以下文章