首页 > 解决方案 > 如何选择每个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  |       |

请你帮助我好吗?

标签: mysqlsql

解决方案


SELECT * FROM (
    [ID],[Date]
    ROW_NUMBER() OVER (PARTITION BY [ID] ORDER BY [Date] DESC) AS rn
FROM YourTable) AS A
WHERE A.rn<=3

推荐阅读