我有一张角色表  里面有  ID  等级level  经验 exp;
1.首先我要根据等级从高到低排序。
2.如果等级相同我就根据经验高的排在前面。
3.之后我在其中找出ID为17的这个账号排的行数是多少。
请问各位高手这句SQL在MySql里怎么写

解决方案 »

  1.   

    这个去MYSQL问问吧。或者等我比较空的时候去研究一下
      

  2.   

    select no from
    (select *,no=row_number() over(order by level desc,exp desc) from tb) t
    where id=17
      

  3.   

    select * from(
    select ID,level,exp,(select count(*) from tbrole where level<=a.level and exp<=a.exp)rank
    from tbrole
    )t where id=17
      

  4.   

    mysql里面木有这个 只能通过(select count(1)....)这样弄
      

  5.   

    select ID,level,exp,
    (select sum(case when level>a.level then 1 else (case when level=a.level and exp>a.exp then 1 else 0 end) end)+1 from tbrole) as rank
    from tbrole where id=17
      

  6.   

    select no from
    (select *,no=row_number() over(order by level desc,exp desc) from t_role) t_role
    where id=17  我按照上楼写的在MYSQL里运行  但是他报了这个错
    1064-You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(order by level desc,exp desc) from t_role) t_role where id=17 ' at line 2 
    我数据库不怎么样  请问下楼上的高手这是什么意思呢
      

  7.   

    用5楼试试,my没有rownumber函数,我写的mssql,