MySQL——根据用户名查询用户的排名情况

1.遇到的问题:

【遇到问题来源】
https://www.cnblogs.com/-mrl/p/9073375.html




【遇到问题:】
【前提】根据如上博文,创建了表格和数据,数据与博文一样一样的。

img

【异常】但是, 查询的结果就是不对,我查询任何用户的排名都是1.

img




【解答点】
1.具体原因是什么?
2.具体需要怎么查询,才能查到某个用户的排名?

改为使用:ROW_NUMBER() 试试
SELECT b.* FROM
(
SELECT *,ROW_NUMBER() OVER (ORDER BY score DESC) AS r_number FROM testsort WHERE uid IN (111,222,333,444,555)
) AS b WHERE b.uid = 222;

如有帮助,请采纳!

mysql版本
SELECT b.* FROM
(
SELECT t.*, @rownum := @rownum + 1 AS rownum
FROM (SELECT @rownum := 0) r,
(SELECT * FROM testsort WHERE uid IN (111,222,333,444,555) ORDER BY score DESC) AS t
) AS b where EXISTS (select * from testsort where uid = 222 and uid =b.uid ) 这样也可以

img

img


无法重现,我的MySQL版本是5.6