我有两张桌子
游戏和分数:
游戏具有主键ID
Scores具有game_id,该id引用games.id并在其他字段中创建。
我正在尝试修改这个question的公认答案中的第二个示例,以满足我的需要。
SELECT g.*,
s.*
FROM GAMES g
LEFT JOIN SCORES s ON s.game_id = g.id
JOIN (SELECT n.game_id,
MAX(n.created_on) AS max_score_date
FROM SCORES n
GROUP BY n.game_id) y ON y.game_id = s.game_id
AND y.max_score_date = s.created_on
它几乎可以工作,它得到每场比赛得分表中的最新条目。但是,它只返回在得分表中有相应项的游戏。我需要它来返回所有的游戏在表上没有规则,如果他们有一个进入得分表。通过阅读前面引用的问题,我假设左连接将完成。
最佳答案
SELECT
g.*, s.*
FROM
GAMES g
LEFT JOIN
(
SCORES s
INNER JOIN
(
SELECT
n.game_id, MAX(n.created_on) AS max_score_date
FROM
SCORES n
GROUP BY
n.game_id
)
y
ON y.game_id = s.game_id
AND y.max_score_date = s.created_on
)
ON s.game_id = g.id
关于mysql - 左加入最新记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11869539/