admin

左加入最新记录

sql

我有两张桌子

游戏和比分:

游戏具有主键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

它几乎可以正常运行,它会在每个游戏的得分表中获取最新的条目。但是,它只会返回得分表中具有相应条目的游戏。我需要它返回表中的所有游戏,无论它们是否在得分表中都有条目。通过阅读前面提到的问题,我认为左联接将完成。


阅读 147

收藏
2021-07-01

共1个答案

admin

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

2021-07-01