如何获取记录所在的索引

时间:2014-03-02 01:02:34

标签: php mysql sql

我的用户表中有一个名为'points'的字段, 并且根据他们的积分有多高排名,得分最高的人是排名第一。

我如何通过DESC顺序中的'积分'命令成员,然后获得玩家所处的索引,以便我可以对其进行排名? 我为我的排名页面使用了一个循环,但我无法真正遍历每个玩家。 我正在使用PDO。

$q = mysql_query("SELECT count(points) FROM members WHERE id = {$id}");

$rank = mysql_result($q, 0, 0) + 1;

我有代码,但我的问题是它在mysql_中,我需要它在PDO中我不知道如何做到这一点因为mysql_result在pdo中丢失了一些参数( - > fetchColumn我相信)

另一种解释它的尝试: 我想按顺序按顺序对用户进行排序,然后使用ROW NUMBER作为排名,如何获取原始行号?

1 个答案:

答案 0 :(得分:2)

您要做的是使用内部查询对结果集进行排名,然后外部查询将结果集限制为您需要其排名的用户。喜欢:

/* Assuming the users' table is "members" and it contains the field "points" */
SELECT mo.* , (
    SELECT COUNT( * ) FROM members mi
    WHERE mi.points >= mo.points  // >= for desc order, <= to for ascending order
) AS rank
FROM members mo
WHERE id = @id                    // Replace @id with the id

行号/他们的排名将是结果中的排名字段。

外部注意:您不希望像上面的查询那样执行mo.*,而是选择结果集中所需的特定列.... SELECT mo.id, mo.name, ...