我对SQL很陌生,但我想做的是一个评论回复功能。例如,假设您有一个profile_id of 11,并且您评论了一个post_id为339的post 。如果其他几个人在这篇文章上发表了评论,那么我想向你展示一下,自从你发表评论以来,关于那篇文章的最新评论。请看下面的第一个图像,即表,因为您可以看到用户11发布在中间。我想得到最后的评论,在这篇文章中,声明之类的,因为它的用户11评论。
这是桌子
如果我是用户11,我只想看到在我评论的线程/帖子上发布的最新评论。这意味着我想看到下面写着" Blah“的帖子,但是我只收到我的评论。任何建议都会很好。我在用Postgres 9.6
发布于 2017-03-31 02:43:14
下一个查询将解决您的问题:
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)
发布于 2017-03-31 01:52:19
SELECT * FROM comment_replies ORDER BY last_reply_timestamp DESC LIMIT 1;
这将使用Order By
将它们按最新到最老的顺序排序。因为LIMIT 1
,它也只显示了一个结果。
https://stackoverflow.com/questions/43131072
复制相似问题