【遇到问题来源】
https://www.cnblogs.com/-mrl/p/9073375.html
【遇到问题:】
【前提】根据如上博文,创建了表格和数据,数据与博文一样一样的。
【异常】但是, 查询的结果就是不对,我查询任何用户的排名都是1.
【解答点】
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 ) 这样也可以