如果匹配特定条件,SQL如何获取最新行?

时间:2017-03-31 01:47:09

标签: sql postgresql

我是SQL的新手,但我想做的是评论回复功能。例如,假设您有一个 profile_id为11 ,并且您发布了帖子,其post_id为339 。如果其他几个人对该帖子发表评论,那么我想向您展示自该评论以来对该帖子的最新评论。查看下面的第一张图片,即您可以看到中间发布的用户11。我希望收到关于该帖子的最后评论,该帖子指出 blah blah ,因为用户11对此发表评论。

这是表格 enter image description here  如果我是用户11,我想只看到我评论的同一帖子/帖子上发布的最新评论。这意味着我想看到一篇文章说" Blah Blah"但是我只是得到了我的评论。任何建议都会很棒。我正在使用Postgres 9.6 enter image description here

2 个答案:

答案 0 :(得分:1)

下一个查询将解决您的问题:

select cr.id, cr.stream_id, cr.comments
from comment_replies cr
where 
cr.id in ( select cr2.id 
           from comment_replies cr2
           where 
           cr2.last_reply_timestamp = (select  max(cr3.last_reply_timestamp)
                                       from comment_replies cr3      
                                       where cr3.stream_id=cr2.stream_id
                                      )
           and cr2.stream_id=cr.stream_id
        )
and cr.stream_id in (select cr2.stream_id 
                     from comment_replies cr2 
                     where cr2.profile_id=11)

答案 1 :(得分:0)

SELECT * FROM comment_replies ORDER BY last_reply_timestamp DESC LIMIT 1;

这将使用Order By从最新到最旧排序。由于LIMIT 1

,它也只会显示1个结果