0

これはこの質問の続きです。

プレーヤーが最大スコアを記録したゲーム ID を取得したい。 max(score) を選択するときに、対応する game_id 列の値を取得するのに苦労しています。

私のテーブルは次のとおりです。

id    game_id    player_id    score
1       1            1         345
2       1            2         234
3       2            1         190
4       2            2         167
5       3            4         230
6       3            1         230
7       4            2         453
8       4            3         230

私のクエリはこれまでのところ次のようになります。

SELECT s.id, t.game_id, t.score
FROM    (
        SELECT game_id, score
        FROM stats
        WHERE player_id =2
    ) t
LEFT JOIN stats s on s.game_id = t.game_id AND s.score = t.score
WHERE s.player_id = 2

これは私に与えます

id    game_id    score
 2        1       234
 4        2       167
 7        4       453

次に、game_id を取得するために、このクエリ全体を最大スコア (id = 7) のサブクエリとして結合する必要がありますが、この最大値で結合する方法がわかりません。

4

3 に答える 3

0

これがあなたを助けることを願っています。


    select game_id, player_id, score 
    from (
         select rank() over (partition by player_id order by score desc) as rank_id, game_id, player_id, score
         from stats
         ) a
    where rank_id=1 and player_id = 2

于 2013-03-15T17:40:45.733 に答える
0
SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  player_ID, MAX(Score) max_score
            FROM    TableName
            GROUP   BY Player_ID
        ) b ON a.Player_ID = b.player_ID AND
                a.Score = b.max_score
于 2013-03-15T16:41:17.367 に答える
0

ここで、削除できるSQLフィードを作成しました

SELECT s.id, t.game_id, t.score
FROM    (
        SELECT game_id, score
        FROM game
        WHERE player_id =2 order by score desc limit 0,1
    ) t
LEFT JOIN game s on s.game_id = t.game_id AND s.score = t.score
于 2013-03-15T17:25:31.137 に答える