要求搜索A,B,C三人各最好成绩,并且要列出最好成绩的序号即ID号 如: ID Name Score 1 a 88 5 b 77 4 c 90
最初我觉得好象是初级的题,把眼光放在最大值上,但随后就觉得这重点不在最大值上,而是最大值所在的ID号。 题目难点:搜索出最大值所在的 ID 号 例外情况:每个人都可能出现几个最大的值
动脑:开始先想到这MAX函数: SELECT MAX(Score), [Name] GROUP BY [Name] 但这该死的 ID 号怎么也插入不了
一线希望:用了个子查询: SELECT [ID],[Name],Score FROM Table1 a WHERE Score IN (SELECT MAX(b.Score) AS MAXScore FROM Table1 b GROUP BY b.[Name] ) 可是,这 ID 号还是多出来了,原因是由于该搜索是以最大值的集合作依据,如77这个最大值,可能是B的最大值,但是A和C可能也会出现77这个数,但不是最大值,所以......
胜利,最后加了个条件,使最大值集合中的Name值,与搜索的Name值相符合 SELECT [ID],[Name],Score FROM Table1 a WHERE Score IN (SELECT MAX(b.Score) AS MAXScore FROM Table1 b GROUP BY b.[Name] HAVING a.[Name]=b.[Name] )