$query = "SELECT uo.*,
(
SELECT COUNT(*)
FROM Score ui
WHERE (ui.score) >= (uo.score)
) AS rank
FROM Score uo
WHERE name = '$politestring';";
我的数据库是idkw0t
,数据库名称是idkw0t
。我有一张桌子 - Users
。 Users
表有4列 - ID
,Name
,Score
,Cash
。
如何使SQL查询按名称获取特定用户的排名。 就像有3个名字 - 乔[500分],汤姆[10分]和约翰[50分]。 当我要求汤姆的等级 - 它应该回应说汤姆在第三等级。当我问Joe的排名时,应该回答说Joe在第一名。
我的数据库:
http://image.prntscr.com/image/7ca1ddef8cd7491d81cd9e7ee5560b77.png
答案 0 :(得分:0)
您可以使用稍微不同的方法:
select count(*)
from score s
where s.score >= (select s2.score from score s2 where s2.name = $name);
注意:如果存在关联,这可能会返回预期结果。以上是基于您的查询。你可能打算:
select 1 + count(*)
from score s
where s.score > (select s2.score from score s2 where s2.name = $name);
以上是如何编写查询的示例。如果从应用程序中调用它,请务必使用参数化查询。