select name,score,rownum from
 (select name,score from man_info order by score desc) t

解决方案 »

  1.   

    楼上写的是把全部的数据按成绩排序,可我想要的是某一个人的排名!
    假如我需要查询zs(具体哪一个人不固定)的排名,该怎么写sql!
      

  2.   

    select rownum from
     (select name,score from man_info order by score desc) t
     where name='zs'
      

  3.   

    如果一定要一句话搞定,可以用用这个
    select name,score, no from (select name,score,rownum  as no from  (select name,score from man_info order by score desc) t)  where name='ls';三重select套用,呵呵,这样做数据大的时候,可能会很慢的!
      

  4.   

    welyngj(平平淡淡)的语句执行结果是,不管name为什么,结果都是第一名!
      

  5.   

    刚才本来是把 welyngj(平平淡淡) 的反馈结果传上去,可是一直传不上来,其实结果就是和kongzl(kongzl) 说的一样,不行,按照kongzl(kongzl)的写法是可以实现,但是他既然说了数据量大的话可能会很慢,这样也不行,不知道kongzl(kongzl)还有没有更好的办法?很期待!
      

  6.   


    select * from
    (select name,row_number() over(order by  score desc) num from man_info ) t
    where name='sz'
      

  7.   

    kongzl(kongzl) ,和 welyngj(平平淡淡) 的sql都符合我的要求,二选一,ok,结帖了!
      

  8.   

    按照楼上第一条sql说得
    SQL> select name,score,rownum from
      2   (select name,score from man_info order by score desc) t
      3  ;NAME                      SCORE     ROWNUM
    -------------------- ---------- ----------
    wu                          100          1
    ls                           95          2
    zs                           85          3这不是我想要得结果;按照楼上第二条sql说得
    SQL> select rownum from
      2   (select name,score from man_info order by score desc) t
      3   where name='zs'
      4  ;    ROWNUM
    ----------
             1这也不是我想要的结果,因为实际上zs排名为3;其实我想要的结果是
    ROWNUM
    ----------
             3用一条sql能不能实现这个功能,或者要通过创建一个临时表实现吗?
    请高手继续指点!
      

  9.   

    按照楼上第一条sql说得
    SQL> select name,score,rownum from
      2   (select name,score from man_info order by score desc) t
      3  ;NAME                      SCORE     ROWNUM
    -------------------- ---------- ----------
    wu                          100          1
    ls                           95          2
    zs                           85          3这不是我想要得结果;按照楼上第二条sql说得
    SQL> select rownum from
      2   (select name,score from man_info order by score desc) t
      3   where name='zs'
      4  ;    ROWNUM
    ----------
             1这也不是我想要的结果,因为实际上zs排名为3;其实我想要的结果是
    ROWNUM
    ----------
             3用一条sql能不能实现这个功能,或者要通过创建一个临时表实现吗?
    请高手继续指点!