select 相似记录中最新的更新记录

select newest update record among similar record

我有 2 个表段和摘要。
我想按日期间隔列出节目,只显示最新更新的片段(粗体),因为它是该人片段的最新副本。
这是我曾经得到以下结果的查询:

select seg.summ, su.channel, seg.block_id, seg.person, seg.updated_at as segupdate 
from segments seg 
   left join summaries su on seg.summ = su.id 
where su.created_at between '2018-06-06' and '2018-07-13' 
order by summ, block_id, seg.updated_at desc;   

我想要这个:

如何更改我的查询以仅显示粗体行?删除旧版本的重复项?

你可以尝试使用ROW_NUMBERwindow函数,使行号order by segupdate DESC,然后得到rn = 1最新的数据行。

SELECT * FROM 
(
     SELECT *,ROW_NUMBER() OVER(PARTITION BY summ,channel,block_id,person order by segupdate DESC) rn
     FROM (
        select seg.summ, su.channel, seg.block_id, seg.person, seg.updated_at as segupdate 
         from segments seg 
         left join summaries su on seg.summ = su.id 
         where su.created_at between '2018-06-06' and '2018-07-13' 
     ) t1
) t1
where rn = 1

这就是我所做的:

select distinct on (seg.summ, seg.block_id, seg.person) su.channel, seg.updated_at as segupdate 
from segments seg 
  left join summaries su on seg.summ = su.id 
where su.created_at between '2018-06-06' and '2018-07-13' 
order by summ, block_id, person, seg.updated_at desc;