MYSQL 5.7获取行号

时间:2019-01-17 16:05:45

标签: mysql

我有一个名为“ playerrank”的数据库,该数据库具有积分列。我想在人们的个人资料页面上显示这样的排名:

排名:3/1456

我尝试使用ROW_NUMBER(),但是主机似乎版本较低(我认为是5.7)。它给了我错误。

除了按点desc排序db并以某种方式获取行号以外,还有其他方法可以基于点获取球员排名吗?

2 个答案:

答案 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;

请注意,从技术上讲行号与等级不是同一回事,但是我怀疑您确实希望在此处使用行号。在这种情况下,如果说三名球员的积分相同,那么他们可能会分配不同的排名。