1

私は他のSQLクエリの質問をかなり調べましたが、私の場合にうまくいくと思われる応答を絞り込むことができませんでした...だからここに行きます.

2 つの mySQL テーブルがあります。

players:
pid
pname

player_stats:
pid
statdate
rank
score

プレーヤーの名前と最新のスコアとランクの出力を次のように表示したいと思います。

player1 | rank10 | 123345
player2 | rank15 | 480993

pname で max(statdate) と GROUP BY を試してみましたが、取得した最も近いものは以下のとおりです。これにより、正しい行数が得られますが、最新の日付ではありません (したがって、最新のランクまたはスコアではありません)。

SELECT p.pname, s.rank, s.score
FROM players p INNER JOIN player_stats s ON p.pid = s.pid
GROUP BY p.pname

前述のように、これは近いですが、ランク/スコアは常に最後の日付のものではありません

4

1 に答える 1

0

dateごとに最新のものを個別に取得するサブクエリで追加の結合を行うことができますpid

pidサブクエリには、との 2 つの列のみが含まれますstatdate。他の列を取得するには、他のテーブルと結合する必要があります。

SELECT  a.pname, b.rank, b.score
FROM    players a
        INNER JOIN player_stats b
            ON a.pid = b.pid
        INNER JOIN
        (
            SELECT  pid, MAX(statdate) statdate
            FROM    player_stats
            GROUP   BY pid
        ) c ON  b.pid = c.pid
                AND b.statdate = c.statdate
于 2013-11-09T20:17:10.390 に答える