mysql排序之后如何查询指定数据排名第几?
现在有这样一张表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?
它可以排名第2或者第3 ??
引用来自“开源***”的评论
它可以排名第2或者第3 ??
对啊,这次查询id为3的结果要为3,下次查询id为1的,也要在第3,是这个意思
--- 共有 2 条评论 ---
: 这次查询id=3结果为3,什么3?下次查询id=2,也要在第3 ?什么3?
完全不懂你的意思
select count(*) from TEST a& where a.number2 &= (select b.number2 from TEST b& where b.id = 3)
--- 共有 3 条评论 ---
: 那要是根据时间先后顺序处理相同分数的排名呢
:本人验证可以。。。
要是我查的是ID=1的呢?你的那个就不能用了
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 ,这个是适应任何情况的,有啥不懂得,问我
--- 共有 1 条评论 ---
数据量大的话,有点慢。
select count(1)+1 from user where number&=(select number from user where id = 3)
select * from table group by table.number order by table.number asc&