SQL按问题分组(在访问中代替最后一个)

我针对这个问题简化了数据库结构: 2张桌子: 人物->姓名,昵称 电影->名称,电影,发行日期

想要的结果:所有上一部电影的所有人的列表

在访问中,我可以最后使用Group BY 在stackoverflow中,我发现用last 1或limit 1代替last,但是我需要列表中的所有人员 感谢您的帮助

评论
  • wfuga
    wfuga 回复

    You can use row_number() :

    SELECT m.*
    FROM (SELECT P.*, M.movie, M.releasedate,
                 ROW_NUMBER() OVER(PARTITION BY P.NAME ORDER BY M.releasedate DESC) AS SEQ
          FROM Person P INNER JOIN
               Movies M
               ON M.Name = P.Name
        ) m
    WHERE SEQ = 1;
    

    您还可以使用相关子查询:

    SELECT P.*, M.movie, M.releasedate
    FROM Person P INNER JOIN
         Movies M
         ON M.Name = P.Name
    WHERE M.releasedate = (SELECT MAX(M1.releasedate) FROM Movies M1 WHERE M1.Name = M.Name);