我有两张桌子
游戏和分数:
游戏具有主键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/

10-13 00:57