表名为score,其中有一字段为grade,用一条SELECT语句按grade从小到
大排序取前3条记录并按grade从大到小
排序(选所有字段)

解决方案 »

  1.   

    select * from 
      (select top 3 * from score order by grade) A
    order by grade desc
      

  2.   

    表名为score,其中有一字段为grade,用一条SELECT语句按grade从小到
    大排序取前3条记录并按grade从大到小
    排序(选所有字段)
    create table score
    (
    [name] varchar(50),
    sex varchar(2),
    grade int
    )
    insert into score([name],sex,grade)
    (
    select 'aa','男',25 union
    select 'bb','女',22 union
    select 'cc','女',24 union
    select 'dd','女',23 union
    select 'ee','女',20 union
    select 'ff','女',18 union
    select 'gg','女',25 union
    select 'hh','女',21 union
    select 'ii','男',21 union
    select 'jj','男',22
    )
    select * from(select top 3 * from score order by grade asc) A order by grade desc
    go 
      

  3.   

    谢谢,可是还是会出现这个提示:http://hi.csdn.net/attachment/201004/27/5516229_12723557681q1W.jpg
      

  4.   

    你用的是SQL SERVER的数据库吗
      

  5.   

    select A.* from(select top 3 * from score order by grade asc) A order by A.grade desc
      

  6.   

    不是的,我用的是PB的ASA数据库,不过我在SQL SERVER里面也测试了一下,提示如下:
    消息 208,级别 16,状态 1,第 1 行
    对象名  'score' 无效。
      

  7.   

    提示好像是不支持order by 把,网上搜搜看是不是这个原因。
      

  8.   

    --sql server
    select * from (select top 3 * from score order by grade ) t order by grade desc--oracle
    select * from (select * from score where rownum <= 3 order by grade ) t order by grade desc