1

我已经非常努力地查看了其他 SQL 查询问题,但无法缩小似乎在我的情况下有效的响应......所以就这样吧。

我有两个 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.

子查询仅包含两列:pidstatdate。要获取其他列,您需要将其与其他表连接起来。

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 回答