mysql查询从结果集中查找特定记录的行号

时间:2014-01-07 10:21:43

标签: mysql sql

我有一个表团队(名称,身份证,分数)。

我想根据分数找到团队的等级。

SELECT *FROM team ORDER BY points DESC

以上查询排序导致团队点数的降序。现在我想找到特定球队的排名。表示此结果集的行号。

3 个答案:

答案 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