sql - id只有一个日期
问题描述
我有一张表,其中包含与一个 id 相关的许多记录,我只需要为每个 id 选择具有最新 StartDate 的一条记录。我怎样才能简单地做到这一点?例如,对于 id 5001145,我只需要选择开始日期为 2020-03-20 的行。
解决方案
一个简单的方法是相关子查询:
select t.*
from t
where t.startdate = (select max(t2.startdate)
from t t2
where t2.id = t.id
);
另一个变体是row_number()
:
select t.*
from (select t.*,
row_number() over (partition by id order by startdate desc) as seqnum
from t
) t
where seqnum = 1;
推荐阅读
- go - 如何从数据存储返回的对象中检索关键对象
- angular - Angular 8 到 GAE
- regex - 运行 checksetup.pl 时出错 Bugzilla 5.0.6 安装:您提供的正则表达式 '^[^,]+{' 无效
- excel - VBA Pivot Item.Name 提取错误值
- typescript - 猫鼬打字稿类
- reactjs - i18next-icu 在反应中翻译时不支持 {{ (双括号)
- javascript - 为什么我不能用字符串更新 MySQL?
- sql - 如何选择多对多关系表?
- javascript - 如何让选择选项与禁用和启用提交按钮一起使用
- vue.js - vue-table-2 的自定义搜索框