我正在研究如何实施排行榜。我想做的是能够通过几个不同的过滤器(分数、提交数、平均值)对表格进行排序。该表可能如下所示。
+--------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------------+------+-----+---------+-------+
| userID | mediumint(8) unsigned | NO | PRI | 0 | |
| score | int | YES | MUL | NULL | |
| numSub | int | YES | MUL | NULL | |
+--------+-----------------------+------+-----+---------+-------+
还有一组样本数据,如下所示:
+--------+----------+--------+
| userID | score | numSub |
+--------+----------+--------+
| 505610 | 1245 | 2 |
| 544222 | 1458 | 2 |
| 547278 | 245 | 1 |
| 659241 | 12487 | 8 |
| 681087 | 5487 | 3 |
+--------+----------+--------+
我的查询将来自 PHP。
// get the top 100 scores
$q = "select userID, score from table order by score desc limit 0, 100";
这将首先返回一组用户ID/分数排序的最高分我还有一个查询按numSub(提交数)排序
我想要的是按分数/numSub 的平均分数对表格进行排序;桌子可能很大,所以效率对我来说很重要。
提前致谢!