首页 > 解决方案 > 如何设置子查询以获取具有最新日期和最大 ID 的单个记录?

问题描述

我需要设置一个查询,结果是一个表,其中包含来自主表的特定列值的单个记录,每条记录必须有最新的日期,如果最新日期在多条记录中相同,我只需要一条记录最大的身份。

到目前为止,我正在使用

Select id, p_id, max(date), column1, etc
From table
Group by p_id

但是我需要另一部分为 p_id 提供一条记录,每个记录都有最新的日期和最大的 id。

标签: sqldatabasepostgresqlgreatest-n-per-group

解决方案


只需使用distinct on

select distinct on (p_id) t.*
from mytable t
order by p_id, date desc, id desc

对于每一个p_id,这都会为您提供最大的行date。列id用作决胜局。


推荐阅读