我有一个名为“ playerrank”的数据库,该数据库具有积分列。我想在人们的个人资料页面上显示这样的排名:
排名:3/1456
我尝试使用ROW_NUMBER(),但是主机似乎版本较低(我认为是5.7)。它给了我错误。
除了按点desc排序db并以某种方式获取行号以外,还有其他方法可以基于点获取球员排名吗?
答案 0 :(得分:2)
在MySQL 5.7中,只需一个查询
SELECT
(@row_number := @row_number + 1) AS rnk, points
FROM yourTable,
(SELECT @row_number := 0) AS x
ORDER BY points DESC;
答案 1 :(得分:1)
在MySQL 5.7中模拟行号的一个选项使用会话变量:
SET @row_number = 0;
SELECT
(@row_number:=@row_number + 1) AS rnk, points
FROM yourTable
ORDER BY points DESC;
请注意,从技术上讲行号与等级不是同一回事,但是我怀疑您确实希望在此处使用行号。在这种情况下,如果说三名球员的积分相同,那么他们可能会分配不同的排名。