按分数统计排名查询怎么写,比如
名次  分数
  1      90
  2      87
  2      87
  4      80
  5      79
 
出现并列的名次,比如出现两个第二名,接着就是第四名

解决方案 »

  1.   

    select data.*
        , @r1:=@r1+1
    , @r:=if(@p=value,@r,@r1) as 排名
        , @p:=value
    from(
    select 100 as value union all
    select 100 as value union all
    select 90 as value union all
    select 80 as value union all
    select 80 as value union all
    select 70 as value
    ) data,(select @r:=0) as b,(select @r1:=0) as c, (select @p:=null) as d
    order by value desc;
      

  2.   

    data 子查询用你的数据表代替,value 对应成绩列,排名列是你要的
      

  3.   

    select 分数, ifnull((select count(*) from table1 where 分数>t.分数),0)+1 as 名次
    from table1 t