我有一个像这样的MySQL表...

ID | NAME  | RANK | PTS
---+-------+------+----
12 | John  | 1    | 28
18 | Andy  | 2    | 31
23 | Brian | 3    | 16
41 | Mike  | 4    | 33
15 | Jack  | 5    | 35
68 | Anne  | 6    | 24


我目前排序...

SELECT * FROM `ranks` ORDER BY PTS desc


我正在寻找可以给它一个ID的代码,它将返回它在PTS列中的排名。对于ID 41,它应返回2作为该列的第二佳分数。

我不确定要从Google那里得到什么答案。是否有一些SQL代码可以简单地做到这一点?也许PHP? RANK列是总体排名,PTS是到目前为止的当前每周得分。最终可能会有多达250万个条目。请让我知道,如果你有任何问题。

最佳答案

// get the number of ppl w/ points higher than the given user's
SELECT count(*) + 1 FROM ranks WHERE PTS > (
    SELECT PTS FROM ranks WHERE ID = 41);


...尽管如果您希望扩展规模,则可能需要重新考虑如何构造数据。

关于php - 从SQL总计列获取排名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16349457/

10-13 06:06