我有一个名为“点”的表,如下所示,
姓名 | 观点 美国广播公司 10 cde 5 EFG 15
如何查找特定名称的排名?
例如:在上述情况下,cde 排名 3
一个简单的方法(虽然它需要知道一个名字有多少分)是计算它上面的行
SELECT COUNT(*) AS rank FROM tbl WHERE points > '%d'
这将是您的 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();
}