mysql排序之后如何查询指定数据排名第几?

DogTom 发布于 2015/08/29 16:03
阅读 10K+
收藏 1

现在有这样一张表user,字段为id,name,number.想要实现这样的效果,以number排序,查询某个id所在的数据排在第几位,假如这个数据有几个相同的,那么取它为最低排名.

例如有这么几行:    id   name   number

                          1      A         10 

                          2      B         20  

                          3      C         10 

                          4      D          5

现在查询id为3的数据,它可以排名第2或者第3,那么一定要让它取第3这种情况.

请问该如何实现这样功能呢?sql?还是java?
加载中
0
开源小姐
开源小姐
它可以排名第2或者第3 ??
0
DogTom
DogTom

引用来自“开源小姐”的评论

它可以排名第2或者第3 ??

对啊,这次查询id为3的结果要为3,下次查询id为1的,也要在第3,是这个意思

开源小姐
开源小姐
回复 @开源小姐 : 这次查询id=3结果为3,什么3?下次查询id=2,也要在第3 ?什么3?
开源小姐
开源小姐
完全不懂你的意思
0
随想1994
随想1994
select count(*) from TEST a  where a.number2 >= (select b.number2 from TEST b  where b.id = 3)
浮梦逍遥
浮梦逍遥
回复 @少年1998 : 那要是根据时间先后顺序处理相同分数的排名呢
随想1994
随想1994
回复 @透明如风 :本人验证可以。。。
透明如风
要是我查的是ID=1的呢?你的那个就不能用了
0
透明如风
SELECT temp.pm FROM (SELECT @rownum:=@rownum+1 pm,`user`.* FROM (SELECT @rownum:=0) a, `user` ORDER BY `number`,`id`) temp WHERE temp.id = 3 ,这个是适应任何情况的,有啥不懂得,问我
双子星说
双子星说
数据量大的话,有点慢。
0
Zemo
Zemo
select count(1)+1 from user where number>=(select number from user where id = 3)



0
杨少_winston
杨少_winston
select * from table group by table.number order by table.number asc 
返回顶部
顶部