SELECT [ID],[Name],Score //选取table1中的三个字段
FROM Table1 a //table1的别名为a
WHERE Score IN //条件语句,score字段在……中
(SELECT MAX(b.Score) AS MAXScore //子查询,选最大值的score别名为maxscore
FROM Table1 b //table1的别名为b
GROUP BY b.[Name] HAVING a.[Name]=b.[Name] ) //按照name分组并且name值相同好象语句有问题,不能运行吧???
FROM Table1 a //table1的别名为a
WHERE Score IN //条件语句,score字段在……中
(SELECT MAX(b.Score) AS MAXScore //子查询,选最大值的score别名为maxscore
FROM Table1 b //table1的别名为b
GROUP BY b.[Name] HAVING a.[Name]=b.[Name] ) //按照name分组并且name值相同好象语句有问题,不能运行吧???
FROM Table1 a
WHERE Score=(SELECT MAX(b.Score) FROM Table1 b where a.[Name]=b.[Name])
FROM Table1 as a inner join
(SELECT [Name],MAX(Score) AS MAXScore FROM Table1 GROUP BY [Name]) as b
on a.[Name]=b.[Name] and b.MAXScore=a.Score
从A中拿出第一条记录,用该记录的NAME作子查询的条件去执行子查询,即在B中找到和该NAME值一样的所有记录,再从这些记录中找到最大的SCORE,这个找到的SCORE就做为外部查询的条件,即A中的第一条记录的score是否和这个找到的Score相等。若相等,则把A中的第一条记录拿出来(不相等则说明A中的第一条记录不是所要的)。
A中第一条记录就完成了。再对A中第二条记录做上述同样的操作,依此类推