表内容为
ids    姓名    学科   得分      类别
1     name1   C#     70     计算机
2     name2   C#     75     计算机
3     name2   java   80     计算机
4     name1   C#     77     计算机
5     name3   英语    72     语言
6     name3   java   81     计算机我想得取类别为"计算机"的学科排行榜:如下
ids    姓名   学科    得分   类别
1     name1  C#     77    计算机
6     name3  java   81    计算机菜花先谢大家啊.很急啊.

解决方案 »

  1.   

    select * from tb t
    where not exists(select 1 from tb where t.类别=类别 and t.学科=学科 and 得分>t.得分)
      

  2.   

    select 学科,max(得分),'计算机'
    from table
    where 类别='计算机'
    group by 学科
      

  3.   


    select * from tb as a 
    where 类别='计算机' and 
      not exists(select 1 from tb where 类别='计算机' and 学科=a.学科 and 得分>a.得分)
      

  4.   


    select * from tb t where not exists(select 1 from tb where t.类别=类别 and t.学科=学科 and 得分>t.得分)
    and 类别='计算机'
      

  5.   

    select * from tb as a 
    where 类别='计算机' and 
      得分=(select max(得分) from tb where 类别='计算机' and 学科=a.学科 )
      

  6.   

    SELECT *
    FROM tb AS t
    WHERE 得分=(
               SELECT MAX(得分)
               FROM tb
               WHERE t.类别=类别
                   AND 学科=t.学科
                   AND 学科='计算机'
               )
      

  7.   


    select * from tb as a 
    where 类别='计算机' and 
      not exists(select 1 from tb 
    where 类别='计算机' and 学科=a.学科 and 得分>a.得分)
      

  8.   

    select * from 表1 a where not exists(select 1 from 表1 where a.类别=类别 and a.学科=学科 and 得分>a.得分)
    and a.类别='计算机'
      

  9.   

    SELECT a.*
    FROM  tb a,
          (
          SELECT 类别,学科,MAX(得分)as MaxScore
          FROM tb 
          GROUP BY 类别,学科
           ) b
    WHERE a.类别=b.类别 AND a.学科=b.学科 
           AND a.得分=b.MaxScore
      

  10.   

    --> --> (Andy)生成测试数据 2008-10-13
    Set Nocount On
    declare @1 table([ids] int,[姓名] nvarchar(5),[学科] nvarchar(4),[得分] int,[类别] nvarchar(3))
    Insert @1
    select 1,N'name1',N'C#',70,N'计算机' union all
    select 2,N'name2',N'C#',75,N'计算机' union all
    select 3,N'name2',N'java',80,N'计算机' union all
    select 4,N'name1',N'C#',77,N'计算机' union all
    select 5,N'name3',N'英语',72,N'语言' union all
    select 6,N'name3',N'java',81,N'计算机'
     
    Select  * from @1 a Where [类别]=N'计算机' And ids=(Select Top 1 ids From @1 where [类别]=a.[类别] And [学科]=a.[学科]  Order By  [得分] Desc)
    /*
    ids         姓名    学科   得分          类别
    ----------- ----- ---- ----------- ----
    4           name1 C#   77          计算机
    6           name3 java 81          计算机
    */
      

  11.   

    create table #XK
    (
      id int identity(1,1) primary key not null,
      [Name] nvarchar(20),
      Subject Nvarchar(20),
      Score int,
      [Type] nvarchar(20) 
    )
    insert into #XK select 'name1','C#',70,'计算机'
    insert into #XK select 'name2','C#',75,'计算机'
    insert into #XK select 'name2','Java',80,'计算机'
    insert into #XK select 'name1','C#',77,'计算机'
    insert into #XK select 'name3','英语',72,'语言'
    insert into #XK select 'name3','java',81,'计算机'select * from #XK XX where not exists (select * from #XK where XX.Subject=Subject and XX.Score<Score) and [Type]='计算机'
      

  12.   

    COPY:KG的
    呵呵
    SELECT a.*
    FROM  #XK a,
          (
          SELECT [Type],Subject,MAX(Score)as MaxScore
          FROM #XK 
          GROUP BY [Type],Subject
           ) b
    WHERE a.[Type]=N'计算机' AND a.Subject=b.Subject 
           AND a.Score=b.MaxScore
      

  13.   

    Set Nocount On
    declare @1 table([ids] int,[姓名] nvarchar(5),[学科] nvarchar(4),[得分] int,[类别] nvarchar(3))
    Insert @1
    select 1,N'name1',N'C#',70,N'计算机' union all
    select 2,N'name2',N'C#',75,N'计算机' union all
    select 3,N'name2',N'java',80,N'计算机' union all
    select 4,N'name1',N'C#',77,N'计算机' union all
    select 5,N'name3',N'英语',72,N'语言' union all
    select 6,N'name3',N'java',81,N'计算机'
    select * from @1 t where [类别]='计算机' and [ids] !<all(select [ids] from @1 where [学科]=t.[学科] and [得分]>t.[得分])
    /*
    ids         姓名    学科   得分          类别   
    ----------- ----- ---- ----------- ---- 
    4           name1 C#   77          计算机
    6           name3 java 81          计算机
    */
      

  14.   

    见同组中选一个http://topic.csdn.net/u/20080123/18/9731d130-0d4b-4c11-8d89-f2c3ca331f0c.html