从每个子集中选择Max

Chi*_*isu 5 sql-server max subset

我在这里敲我的头.我觉得很愚蠢,因为我确定我以前做过这样的事情,但不能为我的生活记住如何.其中一天我猜>.<

说我有以下数据:--->和一个返回此的查询:--->但我想要这个:

ID   FirstID              ID   FirstID                ID   FirstID
--   -------              --   -------                --   -------
1     1                   1    1                      7    1
2     1                   3    3                      3    3
3     3                   4    4                      6    4
4     4                   5    5                      5    5
5     5
6     4
7     1
Run Code Online (Sandbox Code Playgroud)

请注意,我的查询返回ID = FirstID的记录,但我希望它返回唯一FirstID的每个子集的Max(ID).听起来很简单吧?这就是我的想法,但我一直在追回记录#7.这是我的查询(返回上面第二块图的那个)和一些测试代码,让您的生活更轻松.我需要这个给我最右边的块结果.应该注意,这是一个自连接表,其中FirstID是ID的外键.谢谢 :)

declare @MyTable table (ID int, FirstID int)
insert into @MyTable values (1,1),(2,1),(3,3),(4,4),(5,5),(6,4),(7,1)
select ID, FirstID
from @MyTable
where ID = FirstID
Run Code Online (Sandbox Code Playgroud)

Raj*_*ore 4

这行得通吗

declare @MyTable table (ID int, FirstID int)
insert into @MyTable values (1,1),(2,1),(3,3),(4,4),(5,5),(6,4),(7,1)

Select FirstID, Max (Id) ID
From @MyTable
Group BY FirstID
Run Code Online (Sandbox Code Playgroud)

结果是

FirstID     ID
----------- -----------
1           7
3           3
4           6
5           5
Run Code Online (Sandbox Code Playgroud)