表1
ID 姓名 科目  成绩
1  小王  语文  81
2  小王  数学  69
3  小王  英语  67
4  小李  语文  62
5  小李  数学  100
6  小李  英语  60
7  小张  语文  80
8  小张  数学  81
9  小张  英语  77
要求查询出每个人的最高分.
结果
ID 姓名 科目  成绩
1  小王  语文  81
5  小李  数学  100
8  小张  数学  81

解决方案 »

  1.   

    select max(成绩) where 姓名 in(select distinct(姓名) from 表1);
      

  2.   

    //Select a.* from 表1 a,(Select 姓名,max(成绩) 成绩 from 表1 group by 姓名) b where a.姓名=b.姓名 and a.成绩=b.成绩//感觉效率不怎么样 思路
    //先 根据学生分组 找出最高分数 (有可能并列)
       Select 姓名,max(成绩) 成绩 from 表1 group by 姓名
    //在拿结果到表1中 用上面的结果作为条件 查询
      

  3.   

    select 姓名, 科目, max(成绩) from table group by 姓名
      

  4.   

    select  max(姓名),科目,max(成绩) from table group by 科目
      

  5.   

    不好意思少了个 as  应该是:
    select  max(姓名) as 姓名,科目,max(成绩) as 成绩 from table group by 科目
      

  6.   

    --方法一
    Select A.* From 表1 A 
    Inner Join
    (Select 姓名, Max(成绩) As 成绩 From 表1 Group By 姓名) B
    On A.姓名 = B.姓名 And A.成绩 = B.成绩--方法二
    Select * From 表1 A Where Not Exists(Select 成绩 From 表1 Where 姓名 = A.姓名 And 成绩 > A.成绩)--方法三
    Select * From 表1 A Where 成绩 In (Select Max(成绩) From 表1 Group By 姓名)
      

  7.   

    zhifuwang() ( ) 信誉:100  2007-08-11 12:56:36  得分: 0  
     
     
       不好意思少了个 as  应该是:
    select  max(姓名) as 姓名,科目,max(成绩) as 成绩 from table group by 科目  
     
    ---------
    這個明顯錯誤的。