如何设置子查询以获取具有最新日期和最大 ID 的单个记录?

Posted

技术标签:

【中文标题】如何设置子查询以获取具有最新日期和最大 ID 的单个记录?【英文标题】:How can I set subquery to get single records with latest date and maximum id? 【发布时间】:2020-11-15 12:52:52 【问题描述】:

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

到目前为止,我正在使用

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

但我需要另一部分为 p_id 提供单个记录,每个记录都包含最新日期和最大 ID。

【问题讨论】:

【参考方案1】:

只需使用distinct on:

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

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

【讨论】:

以上是关于如何设置子查询以获取具有最新日期和最大 ID 的单个记录?的主要内容,如果未能解决你的问题,请参考以下文章

左连接与子查询的性能问题以找出最新日期

用于获取 ID1 的最新条目的 SQL 查询

如何检索表的值以获取sql中两列的最大值

无法在具有聚合值的 HAVING 子句中使用来自子查询表连接的单值列

Python sqlite3 SQL查询获取具有最新日期但每个唯一列限制的所有条目

hql 查询以检索具有最大日期值的数据