我在SQL Server数据库的表中具有以下数据。
查询select * from mytable order by UpdatedDate Desc
返回:
ID COL1 UPDATED DATE
37 NULL 2018-06-25 18:20:50.210
37 NULL 2018-06-24 18:22:31.230
38 NULL 2018-04-03 14:16:47.953
38 NULL 2018-04-02 14:17:42.660
38 NULL 2018-04-01 14:17:55.963
44 NULL 2018-06-25 18:13:31.780
44 NULL 2018-06-23 18:13:44.020
44 NULL 2018-06-21 18:13:53.003
44 NULL 2018-06-20 18:14:01.490
什么查询将返回以下结果,即第二次更新的最新记录
37 NULL 2018-06-24 18:22:31.230
38 NULL 2018-04-02 14:17:42.660
44 NULL 2018-06-23 18:13:44.020
答案 0 :(得分:4)
仅查找行号= 2的记录。对于最新记录,您需要按日期顺序排序。
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY UPDATED_DATE DESC) AS rn
FROM yourdata
) x
WHERE rn = 2