首页 > 解决方案 > 获取最近的记录,按 2 个日期汇总?

问题描述

有一张UsersEntry桌子

id | UID | RelationshipID | Value1 | ModDate | CreateDate

UID 可以在此表中插入多次(每个关系 ID 一次)。ModDate 在创建时为空,因此可能具有以下内容

1 | 5 | 1  | 100 | null                | 2020-03-16 01:59:29
2 | 5 | 10 | 100 | 2021-03-01 01:59:29 | 2020-03-16 01:59:29
3 | 5 | 30 | 100 | 2021-03-16 01:59:29 | 2020-03-16 01:59:29
4 | 8 | 30 | 100 | null                | 2020-03-16 01:59:29

对于用户 UID 5,我想提取记录 ID 2。对于 UID 8,我想提取记录 4。

我真正关心的只是UserIDValue1(每个用户最近修改的 Value1。

谢谢!

不知道为什么我会被否决...我已经尝试过分组,但是两个日期的比较让我失望。

标签: mysqlsql

解决方案


窗口函数是一种典型的方法:

select ue.*
from (select ue.*,
             row_number() over (partition by UID order by modDate desc) as seqnum
      from UsersEntry ue
     ) ue
where seqnum = 1;

推荐阅读