mysql - 如何选择每个ID对应的3个最新日期的所有数据?
问题描述
ID | DATE | OTHER | OTHER
----------------------------------
ID45 | 8/22/2020 | |
ID45 | 9/12/2020 | |
ID45 | 12/13/2020 | |
ID45 | 7/14/2020 | |
ID56 | 3/15/2020 | |
ID56 | 2/19/2020 | |
ID56 | 9/24/2020 | |
ID56 | 5/18/2020 | |
ID72 | 7/20/2020 | |
我想查看与 ID 的最后 3 个日期相关的所有数据(所有列)结果将是在这种情况下:
ID | DATE | OTHER | OTHER
----------------------------------
ID45 | 12/13/2020 | |
ID45 | 9/12/2020 | |
ID45 | 8/22/2020 | |
ID56 | 9/24/2020 | |
ID56 | 3/15/2020 | |
ID56 | 2/19/2020 | |
请你帮助我好吗?
解决方案
SELECT * FROM (
[ID],[Date]
ROW_NUMBER() OVER (PARTITION BY [ID] ORDER BY [Date] DESC) AS rn
FROM YourTable) AS A
WHERE A.rn<=3
推荐阅读
- sql - Where 子句仅适用于连接中的一列
- sql - 查找指定字符范围之外的字符
- android - 从 Selenium 和 Appium 测试项目中删除捆绑的 APK
- c# - 为什么我的身体(restsharp 库)不正确?
- google-sheets - 基于另一个单元格文本的条件格式
- azure - 为 Azure 资源编写脚本的最广泛的方法是什么?
- html - 简单的 CSS 动画在 Safari 中不流畅
- content-management-system - 在 Ghost CMS 中创建多语言博客
- java - 模拟间谍可以返回存根值吗?
- ruby - 为什么 `1i.to_i` 会引发 `RangeError` 而不是 `NoMethodError`?