我很困在这里。我有这张桌子:
Name | Value | Date
------------------------------
A | Active | 2020-08-07
A | Inactive | 2020-08-06
A | Active | 2020-08-05
B | Inactive | 2020-08-06
B | Active | 2020-08-01
C | Active | 2020-08-02
我只想为每个名称选择最新记录(基于日期)
Name | Value | Date
------------------------------
A | Active | 2020-08-07
B | Inactive | 2020-08-06
C | Active | 2020-08-02
能帮我吗?
答案 0 :(得分:1)
一种简单的方法使用相关子查询:
select t.*
from t
where t.date = (select max(t2.date) from t t2 where t2.name = t.name);
使用(name, date)
上的索引,它通常具有非常好的性能。
另一种适用于许多数据库的方法是row_number()
:
select t.*
from (select t.*, row_number() over (partition by name order by date desc) as seqnum
from t
) t
where seqnum = 1;