【发布时间】:2021-12-08 19:46:51
【问题描述】:
如果我有这样的桌子
fid name date
---------------------
1 John1 2020-10-08
1 John2 2020-10-08
1 John3 2018-06-04
2 Tom1 2019-10-08
我想为每个具有最近日期的fid 保留行。但是,如果有多个,则只保留 1 个(其中任何一个都可以)。所以最终的结果应该是这样的
fid name date
---------------------
1 John1 2020-10-08
2 Tom1 2019-10-08
有人知道如何在 SQL Server 中执行此操作吗?如果重要的话,我会使用 v14 (2017)。
问题是,如果我按fid 分组并执行Max(date),则每fid 获得1 条记录,但是当我离开加入它以获取其他列时,它给了我自最近以来的2 条记录日期显示两次。
【问题讨论】:
-
首先听起来您想从表中删除行(“删除重复项”),然后听起来您只想选择没有重复项的行(“获取其他列”)。你要哪个?
DELETE或SELECT? -
不删除原始数据,只是获取一个不包含我想要删除的查询。所以我要选择。
标签: sql sql-server