select top 2 * from 表 order by 成绩 desc

解决方案 »

  1.   

    selec * from (select top 2 * from 表 order by 成绩 desc) a where 成绩<(select max(成绩) from 表)
      

  2.   

    --查询成绩第一的人
    select top 1 * from 成绩表 order by 成绩 desc
      

  3.   

    --查询成绩第二的人:select top 1 * from 成绩表 where 姓名 not in(select top 1 姓名 from 成绩表 order by 成绩 desc
    )
    order by 成绩 desc
      

  4.   

    因为成绩第一或者第二的人可能不止一个,所以我觉得楼上的大哥写的不大欠佳--成绩第一的人
    select 姓名 from 成绩表 where 成绩 in( select max(成绩) from 成绩表 )--成绩第二的人
    select 姓名 from 成绩表 where 成绩 in (
    select max(成绩) from 成绩表 where 成绩 not in (
    select 成绩 from 成绩表 where 成绩 in( 
    select max(成绩) from 成绩表 )) )
      

  5.   

    楼上的思维完整性8错啊!up,up;
    TRY THIS:--根据作者需求,实现如下:IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
          WHERE TABLE_NAME = '成绩表')
       DROP TABLE 成绩表
    GOCREATE TABLE 成绩表 (姓名 CHAR(8)NOT NULL,成绩 INT)GO--内容虚构,纯属自娱:INSERT INTO 成绩表 SELECT '王晶',88
    UNION ALL SELECT '楼主',89
    UNION ALL SELECT '成龙',90
    UNION ALL SELECT '李连杰',90
    UNION ALL SELECT '周星驰',95GO--第一名:SELECT 姓名,成绩 FROM 成绩表 WHERE 成绩>=(SELECT MAX(成绩) FROM 成绩表)姓名       成绩          
    -------- ----------- 
    周星驰      95(所影响的行数为 1 行)--第二名:SELECT 姓名,成绩 FROM 成绩表 WHERE 成绩=(
    SELECT MAX(成绩) FROM (
    SELECT 姓名,成绩 FROM 成绩表 WHERE 姓名 NOT IN(
    SELECT 姓名 FROM 成绩表 WHERE 成绩>=(
    SELECT MAX(成绩) FROM 成绩表)))AS 成绩表temp)姓名       成绩          
    -------- ----------- 
    成龙       90
    李连杰      90(所影响的行数为 2 行)--DROP TABLE 成绩表