我通过其他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
如上所述这是接近但排名/分数并不总是最后一个日期
答案 0 :(得分:0)
您可以在子查询中添加额外的联接,为每date
分别获取最新的pid
。
子查询只包含两列:pid
和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