从2个连接表中选择最新数据

时间:2013-11-09 20:14:33

标签: mysql sql

我通过其他SQL查询问题看起来非常努力但是无法缩小在我的情况下似乎有效的响应...所以这里就是这样。

我有两个mySQL表:

players:
pid
pname

player_stats:
pid
statdate
rank
score

我想显示玩家姓名的输出和他们的最新得分,排名如下:

player1 | rank10 | 123345
player2 | rank15 | 480993

我在pname上玩过max(statdate)和GROUP BY,但是我得到的最接近的是,它给了我正确的行数但不是最新的日期(因此不是最新的等级或分数)。 / p>

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

如上所述这是接近但排名/分数并不总是最后一个日期

1 个答案:

答案 0 :(得分: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