我有一个表团队(名称,身份证,分数)。
我想根据分数找到团队的等级。
SELECT *FROM team ORDER BY points DESC
以上查询排序导致团队点数的降序。现在我想找到特定球队的排名。表示此结果集的行号。
答案 0 :(得分:1)
简单方法:计算所有团队的得分(或等于)比您的desired_team
更多(或相等)SELECT Count(*)
FROM team
WHERE points >= (SELECT points
FROM team
WHERE name = "team_name");
(你需要包括你的团队,所以“列表”以1开头。) 在这种情况下,如果你的团队拥有与其他团队相同的分数,那么这一行将说明你的团队。如果你只想列出有更多积分的球队,请使用:
SELECT Count(*) + 1
FROM team
WHERE points > (SELECT points
FROM team
WHERE name = "team_name");
pd:对不起我的英文
答案 1 :(得分:-1)
试试这个。它应该给你你所需要的。
SELECT
@i:=@i+1 AS rownumber,
t.*
FROM
team AS t,
(SELECT @i:=0) AS test
ORDER BY points DESC
答案 2 :(得分:-1)
试试这个:
SELECT IF(@prev <> points, @s:=@s+1, @s:=@s) AS `row_number`,
id, name, @prev:=points points
FROM
team, (SELECT @s:= 1, @prev:= 0) s
ORDER BY points DESC