-4

我有一个名为“点”的表,如下所示,

姓名 | 观点
美国广播公司 10
cde 5
EFG 15

如何查找特定名称的排名?

例如:在上述情况下,cde 排名 3

4

2 回答 2

2

一个简单的方法(虽然它需要知道一个名字有多少分)是计算它上面的行

SELECT COUNT(*) AS rank FROM tbl WHERE points > '%d'
于 2013-04-18T18:14:50.020 回答
0

这将是您的 sql 查询:

SELECT t.name FROM sometable t ORDER BY t.point DESC;

在 php 中运行查询后,您将获得一个排序的结果集。然后你通过该结果集计数,直到找到你的名字。那是你的等级。如果您希望队伍向另一个方向发展,请更改DESC为。ASC您的函数的内容如下所示:

$rankingQuery = SELECT t.name FROM sometable t ORDER BY t.point DESC;
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    $rank = 0;
    $sth = $dbh->prepare($rankingQuery);
    $sth->execute();

    $name = $sth->fetchColumn(); 
    while ($name) {
      $rank = $rank + 1;
      if ($name == $DESIRED_NAME {
        return $rank;
      }
      $name = $sth->fetchColumn();
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
于 2013-04-18T18:19:25.777 回答