获取每组最大字段的完整记录

Get entire record with max field for each group

有很多关于这个问题的答案,但是其中 none 检索了整个记录,但只有 ID...而我需要整个记录。

所以,我有一个由 4 列组成的 table status_changes

  1. issue_id : 更改所指的问题
  2. id:变化的id,就是一个SERIAL
  3. status_fromstatus_to 实际上是问题之前的状态,以及问题当时的状态
  4. when 这是发生这种情况的时间戳

没什么太疯狂的,但现在,我想为每一期都提供“最新的status_change”。

我试过类似的方法:

select id
from change 
group by issue_id
having when = max(when)

但这显然有两个大问题:

  1. select 包含不在分组依据中的字段 2 不能这样包含聚合函数

我想过“按 when 对每个组进行排序并使用类似 top(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;

这将 return 每个问题的第一个结果(具有最大 when 的结果)。