繁体   English   中英

SQL - select 仅为每个外键的最新记录

[英]SQL - select only latest record for each foreign key

你好所以我的问题基本上是,我有一个像这样的表格文件

外键 细绳 created_at
1 “一个” 2021-11-10
2 “乙” 2021-11-15
2 “C” 2021-11-18

现在我需要的是 select 每个不同的foreign_key的一条记录(字符串),它总是需要是最新的(created_at)

由于速度的原因,我不能在选择中使用子查询

结果应如下所示:

外键 细绳 created_at
1 “一个” 2021-11-10
2 “C” 2021-11-18

使用ROW_NUMBER

WITH cte AS (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY foreign_key
                                   ORDER BY created_at DESC) rn
    FROM yourTable t
)

SELECT foreign_key, string, created_at
FROM cte
WHERE rn = 1;

另一种方法,使用连接:

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT foreign_key, MAX(created_at) AS max_created_at
    FROM yourTable
    GROUP BY foreign_key
) t2
    ON t2.foreign_key = t1.foreign_key AND
       t2.max_created_at = t1.created_at;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM