【发布时间】:2016-12-07 17:56:50
【问题描述】:
我需要以 2 种不同方式在 total_points 上获取此表中单个玩家 id 的位置(2 个单独的查询很好,除非它可以在 1 中完成?)
例如,如果 player_id = 1 - 我需要通过两种方式从总分中找出他们的行位置:
- 组合在一起并在 player_id 上求和(包括所有 season_id 和 guild_id)
- 将 player_id 与特定的 season_id(包括所有 guild_id)组合在一起并求和
.
+-----------+-----------+----------+--------------+
| player_id | season_id | guild_id | total_points |
+-----------+-----------+----------+--------------+
| 1 | 1 | 1 | 5 |
| 2 | 1 | 2 | 6 |
| 3 | 2 | 1 | 2 |
....
| 1 | 1 | 2 | 4 |
| 2 | 2 | 2 | 4 |
| 4 | 1 | 3 | 8 |
+-----------+-----------+----------+--------------+
所以在这个例子中我会说 player_id = 1 并且结果将返回到我的位置 2,因为他们有第二高的 SUM total_points 在这个例子中是 9(玩家 2 有 10)。
在另一个查询中,我需要将结果分组到一个 season_id 中。 player_id = 1 和 season_id = 1 应该返回位置 1,因为他们有 9,这是本赛季中最高的。
稍后我还需要通过 guild_id 限制它,但我想我可以弄清楚如果我得到一个使用 player_id 和 season_id 的查询
任何帮助都会很棒,所以我不必在 PHP 中完成所有这些工作并遍历所有数据库结果,如果可以在 MySQL 中完成,这将浪费资源,因为该表最终将有数百万条记录.
谢谢。
【问题讨论】: