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值相同好象语句有问题,不能运行吧???

解决方案 »

  1.   

    可以这样写吧???SELECT [ID],[Name],Score
    FROM Table1 a
    WHERE Score=(SELECT MAX(b.Score) FROM Table1 b where a.[Name]=b.[Name])
      

  2.   

    应该是这样写:SELECT [ID],[Name],Score
    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
      

  3.   

    这是一个相关子查询。执行过程如下:
    从A中拿出第一条记录,用该记录的NAME作子查询的条件去执行子查询,即在B中找到和该NAME值一样的所有记录,再从这些记录中找到最大的SCORE,这个找到的SCORE就做为外部查询的条件,即A中的第一条记录的score是否和这个找到的Score相等。若相等,则把A中的第一条记录拿出来(不相等则说明A中的第一条记录不是所要的)。
    A中第一条记录就完成了。再对A中第二条记录做上述同样的操作,依此类推