select * from table a where exists(select * from table where 学科编号=a.学科编号 and 分数>a.分数 having count(*)<=1)Order by 学科编号,分数 Desc

解决方案 »

  1.   

    or:
       Select *
    From table a
    Where 学生学号  in (Select Top 2 学生学号  
                        From table
                        Where 学科编号 =a.学科编号  
                        Order by 分数 desc)
    order by 学科编号,分数 desc
      

  2.   

    select a.* from tb a where 学生学号 in(
    select top 2 学生学号 from tb where 学科编号=a.学科编号) order by a.学生学号
      

  3.   


    --建立测试环境
    Create Table TEST
    (学生学号 Varchar(10),
     学科编号 Int,
     分数 Int)
    --插入数据
    Insert TEST Values('01',              1,          100)
    Insert TEST Values('02',              1,           90)
    Insert TEST Values('03',              1,           80)
    Insert TEST Values('01',              2,           90)
    Insert TEST Values('02',              2,          100)
    Insert TEST Values('03',              2,           70)
    Insert TEST Values('01',              3,           90)
    Insert TEST Values('02',              3,          100)
    Insert TEST Values('03',              3,           95)
    GO
    --测试
    Select * from TEST A 
    Where Not Exists (Select 1 from TEST Where 学科编号=A.学科编号 And 分数>A.分数 Having Count(1)>1 )
    Order By 学科编号,分数 Desc
    --删除测试环境
    Drop Table TEST
    --结果
    /*
    学生学号 学科编号 分数
    01 1 100
    02 1 90
    02 2 100
    01 2 90
    02 3 100
    03 3 95
    */
      

  4.   

    hdhai9451(New New People---新新人类)得到的结果不正确。
      

  5.   

    问一下高手Count(1)>1中的1是什么意思?
      

  6.   

    select top 2 *
    from
    (
    select 學生學號 ,sum(分數) 分數
    from tablename
    group by 學生學號
    ) A
    order by sum(分數)
      

  7.   

    Select * from TEST A 
    Where Not Exists (Select 1 from TEST Where 学科编号=A.学科编号 And 分数>A.分数 Having Count(1)>1 )
    Order By 学科编号,分数 Desc
    请问可以整个解释下吗,我想了想还是有点不太明白为什么要这样写,谢谢