2011-05-24 85 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