mysql - 排名行跳过排名 1

标签 mysql

我有一张供玩家使用的 table :

+------------+-----------+
| player_id  |   date    |
+------------+-----------+
|          1 | 27/1/2018 |
|          1 | 27/1/2018 |
|          1 | 27/1/2018 |
|          2 | 27/1/2018 |
|          2 | 27/1/2018 |
|          3 | 27/1/2018 |
+------------+-----------+

我正在尝试根据玩家 ID 分组的出现次数对它们进行排名。

这是我尝试过的:

SELECT total2.player_id, COUNT(*) + 1 AS rank FROM (
    SELECT player_id, COUNT(*) AS total
    FROM players
    GROUP BY player_id
) total2
INNER JOIN (
    SELECT player_id, COUNT(*) AS total
    FROM players
    GROUP BY player_id
) total3 ON total3.total > total2.total
GROUP BY total2.player_id

我得到的结果:

+------------+------+
| player_id  | rank |
+------------+------+
|          2 |    2 |
|          3 |    3 |
+------------+------+

我想要得到的结果:

+------------+------+
| player_id  | rank |
+------------+------+
|          1 |    1 |
|          2 |    2 |
|          3 |    3 |
+------------+------+

最佳答案

试试这个

这是 fiddle

SELECT a.player_id, @row_number:=@row_number+1 AS row_number 
FROM (SELECT player_id, COUNT(*) AS total
    FROM players
    GROUP BY player_id) a,
(SELECT @row_number:=0) AS t
ORDER BY TOTAL desc

关于mysql - 排名行跳过排名 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479771/

相关文章:

MySql - 开关值

php - INSERT IGNORE INTO - 但原因是哪一列?

mysql - 使用 ejs 时如何使用 url 查询字符串

mysql - 为什么使用 PostgreSQL 和 MySQL 时 Rails 上的整数大小限制不同?

mysql - 如何绘制一个 ERD,您可以在其中存储基于其他 id 的计算方法

php - 如何在 Laravel 5 中将动态字段数据保存到数据库

mysql - Room 从生成的查询中返回错误的初始化对象

php - PHP 对 SQL 请求进行排队

mysql - 关于mysql选择字段类型为 `blob`

php - sql选择当前和上个月的日期