【发布时间】:2020-09-21 06:28:03
【问题描述】:
首先,我已经看过这个post,但我无法让它工作。
所以我想通过一组参数来获取表格中一行的位置。例如。我有一张表,里面有各种统计数据。看起来像这样。
+-----------+-------+--------+------+--------------+
| player_id | kills | deaths | wins | played_games |
+-----------+-------+--------+------+--------------+
| 1 | 0 | 2 | 1 | 3 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 0 | 0 | 0 | 0 |
| 5 | 0 | 1 | 0 | 1 |
| 13 | 0 | 1 | 0 | 1 |
| 14 | 3 | 1 | 2 | 3 |
| 29 | 0 | 3 | 0 | 3 |
| 30 | 0 | 1 | 0 | 2 |
| 32 | 5 | 0 | 1 | 1 |
+-----------+-------+--------+------+--------------+
所以我想显示按胜利排序的玩家排名位置。 在此示例中,玩家 14 将是 Rank #1。
我可以做一个简单的 SELECT * FROM tbl ORDER BY wins ASC 然后枚举行,但是仅为单行加载可能很大的结果集似乎很浪费。
【问题讨论】:
-
在 CTE 中使用 ROW_NUMBER() 或 RANK() 或 DENSE_RANK() (取决于所需的逻辑)并在主查询中选择获得的数字。
标签: mysql sql select mariadb window-functions