我的表名为'points',如下所示,
name | point abc 10 cde 5 efg 15
如何查找特定名称的排名?
例如:在上述情况下cde的等级为3
答案 0 :(得分:2)
一种简单的方法(虽然它需要知道名称有多少个点)是计算它上面的行
SELECT COUNT(*) AS rank FROM tbl WHERE points > '%d'
答案 1 :(得分: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();
}