首先,我已经看了这篇文章,但我不能让它工作。
所以我想通过一组参数得到一行在表中的位置。e、 我有一张表格,里面有各种统计数字。看起来像这样。
+-----------+-------+--------+------+--------------+
| 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的排名是1。
我可以通过wins asc从tbl order执行一个简单的select*,然后枚举行,但是仅仅为一行加载一个可能很大的结果集似乎是浪费。
1条答案
按热度按时间7xzttuei1#
如果运行的是mariadb 10.3或更高版本,只需使用窗口函数:
select
t.,
(select count() + 1 from mytable t1 where t1.wins > t.wins) rn
from mytable t
order by wins desc