我有两张桌子
游戏和比分:
游戏具有主键ID
分数具有game_id,该game_id引用game.id并在其他字段中创建。
我正在尝试使这个问题的可接受答案中的第二个例子适应我的需要。
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