代码之家  ›  专栏  ›  技术社区  ›  Lennie

选择recond by max date return latest record

  •  0
  • Lennie  · 技术社区  · 7 年前

    在PostgreSQL数据库中,我有一个表,其中有2条记录具有相同的外键,但日期/时间不同,我想在左连接子查询中进行选择,以仅返回max记录(最新的记录)。ON子句将用于外键。

    Foreign Key | date_created
    1           | 2017-11-24 17:22:01
    1           | 2017-11-23 17:32:20
    

    我希望最新的记录是2017-11-23 17:32:20

    我尝试的内容:

    SELECT sa.foreign_key, max(date_created) as date_created
    FROM table sa
    GROUP BY sa.foreign_key, sa.date_created
    

    它仍然返回两条记录,而不是仅返回最新的记录。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lukasz Szozda    7 年前

    你可以用 ROW_NUMBER :

    SELECT *
    FROM (SELECT *, 
          ROW_NUMBER() OVER(PARTITION BY sa.foreign_key 
                            ORDER BY sa.date_created DESC) AS rn
          FROM table sa) sub
    WHERE rn = 1;