2014-01-07 51 views
0

我有一個表團隊(名稱,ID,點數)。mysql查詢從結果集中查找特定記錄的行號

我想根據積分找到團隊的排名。

SELECT *FROM team ORDER BY points DESC 

以上查詢排序結果按組隊點數降序排列。現在我想找到特定隊伍的排名。意味着這個結果集的行號。

+0

它不是你鏈接到問題的副本。另一個問題只需要選擇一行時的排名。類似但不同。 – Jeff

回答

1

簡單的方法:計算所有與更多(或等於)點的球隊比你desired_team

SELECT Count(*) 
FROM team 
WHERE points >= (SELECT points 
        FROM team 
        WHERE name = "team_name"); 

(你需要包括你的團隊,因此「列表」以1開頭。) 在這種情況下,如果您的球隊與其他球隊相同得分,則此排會說您的球隊處於此狀態。如果你只whant列出與多個點的團隊使用這樣的:

SELECT Count(*) + 1 
FROM team 
WHERE points > (SELECT points 
       FROM team 
       WHERE name = "team_name"); 

PD:對不起,我的英語

+0

如果你想更長久的搜索實現你的sql:在視圖中的順序。 – Melon

+0

這正是我想要的..謝謝。 – HungryDB

0

試試這個。它應該給你你需要的東西。

SELECT 
    @i:[email protected]+1 AS rownumber, 
    t.* 
FROM 
    team AS t, 
    (SELECT @i:=0) AS test 
ORDER BY points DESC 
0

試試這個:

SELECT IF(@prev <> points, @s:[email protected]+1, @s:[email protected]) AS `row_number`, 
    id, name, @prev:=points points 
FROM 
    team, (SELECT @s:= 1, @prev:= 0) s 
ORDER BY points DESC