我正在使用Postgres数据库(9.6)并在我的查询中使用SQL。我有一个名为 Comment_Replies 的表和3个字段,我专注于Post_ID(Post / thread评论的整数),Profile_ID(用户评论的整数唯一标识符)和(Last_Reply是日期的TimeStamp)的回复)。如果用户对帖子(Post_ID)发表评论,我想检索有人在Post_Id中发布的最新评论,例如
假设我是用户10或profile_ID 10,那么如何查看Post_ID 150的最新评论?例如,用户10对ID为150的帖子有2个回复,但是在2017年1月19日,个人ID为11的用户创建了更新的评论。对于我现在的SQL查询,我有这个
select Distinct ON(stream_id)stream_id,last_reply,comments from
comment_replies where profile_id=10 order by stream_id desc .
此当前查询将为我创建2017年1月12日创建的记录#2。我基本上有2个要求首先获取当前用户发布的帖子(这是通过上面的查询完成),第二个获得与该Post_ID对应的最后一个评论。有点像Facebook,它可以让你知道线程的最新评论。任何建议都会很棒
答案 0 :(得分:1)
你需要过滤"溪流"用户评论过。一种方法使用$1
:
IN
答案 1 :(得分:1)
我创建了一个test
表
create table test
(
post_id int,
profile_id int,
last_reply datetime
);
然后我插入了以下数据
insert into test values(150, 10, '01-01-2017');
insert into test values(150, 10, '02-01-2017');
insert into test values(150, 10, '03-01-2017');
然后以下查询返回所需的结果
select t.post_id, t.profile_id, t.last_reply
from test t
inner join(
select profile_id, max(last_reply) as 'last_comment'
from test
group by profile_id
)tm on t.profile_id = tm.profile_id and t.last_reply = tm.last_comment
附图显示整个过程,包括结果