2012-03-29 18 views
1

私はこの質問にいくつかの良い答えを見つけましたが、実際には動作させることができません。mysqlクエリからプレーヤーのランクを取得

私はhiscoreテーブルから選手のランクを取得するwan't。

id name score 

1 John 10 
2 Linda 5 
3 Emmy 25 

私は、クエリ(リンダ)に名前を渡すと、彼女のランクを取得します(彼女はのみ上記の表に5点を持っている)、そして彼女のランク(NR 3)を取得したいです。

私はこの回答で同様の質問を見つけたが、それを理解していない:私はあなたが望むものを知らない事前

+1

あなたは罰金作品を持って答えたように見えます。指定したユーザーのスコア以上のスコアを持つすべてのユーザーを数えます。 (もしあなたが望むならば、より大きいものに変わる可能性があり、場合によっては1を加えてもよい)。次に、外側をWHERE name = 'Linda'に変更します。 –

答えて

1

このクエリを試してみてください

チェック -

SELECT name, score, rank FROM 
    (SELECT *, @r:[email protected] + 1 rank FROM table_name ORDER BY score DESC) t1, 
    (SELECT @r:=0) t2 
WHERE name = 'Linda' 
+0

ネクタイの場合は失敗します! –

1
SET @rownum := 0; 
SELECT rank, name, score 
FROM 
    (SELECT @rownum := @rownum + 1 AS rank, name, score 
    FROM players 
    ORDER BY score DESC) 
1

SELECT (COUNT(*) + 1) AS rank FROM hiscore WHERE score > (SELECT score FROM hiscore WHERE name = 'Linda')

1

SELECT uo.*, 
    (
    SELECT COUNT(*) 
    FROM users ui 
    WHERE (ui.points, ui.id) >= (uo.points, uo.id) 
    ) AS rank 
    FROM users uo 
    WHERE id = @id 

感謝を。それは "トップ10"を与えるテーブルの横にある整数ですか?このlink

関連する問題