2011-05-24 87 views
0

在我的表中我有团队和积分栏,我想获得前5名的球队。相同积分的球队应该被分组并考虑为其中一个队伍,所以如果5支球队的积分相同那么都应该根据车队积分来作为军衔和明年suceeding记录一个获得数据库前5名排名

+1

好了,有什么问题你有吗?你是否检查过ORDER BY条款? – 2011-05-24 04:55:30

+0

显示您的查询,直到更容易帮助 – Ibu 2011-05-24 04:58:20

回答

0
SELECT team, 
     points, 
     (SELECT COUNT(*) 
      FROM teams t2 
      WHERE t2.points > t1.points) + 1 rank 
    FROM teams t1 
ORDER BY points DESC 
    LIMIT 5 
+0

什么意思由+1在这里?? – diEcho 2011-05-24 04:59:19

+0

@diEcho:呃...对于第一队它将排名0,对于第二个-1否则;-) – zerkms 2011-05-24 05:01:36

1

TRY

SELECT DISTINCT(point), team 
FROM tableTeam 
ORDER BY points DESC LIMIT 5 
0

有没有在MySQL的无窗的功能,所以你要提取的排名在你的脚本。另外,如果我对你的排名标准有所了解,你实际上有兴趣得到排名前5的球队加上任何额外的球队,这些球队的点数可能与第五名的点数相同。

如果是这样,你的限制应适用于子查询的点标准:

select name, points 
from teams 
where points >= (
     select points 
     from teams 
     order by points desc 
     limit 1 offset 4 
    ) 
order by points desc, name 

如果不是这样,一个简单的命令由/限制将做到:

select name, points 
from teams 
order by points desc, name 
limit 5 
+0

它应该是'抵消4':-P – zerkms 2011-05-24 05:14:56

+0

好点。固定! :-) – 2011-05-24 05:15:43