我有下表:
id post_id user_id to_user_id date time
---- ---------- -------- ------------ ------
1 100 1 2 10:00
2 100 1 2 10:30
3 100 2 2 11:00
4 100 5 2 11:30
5 100 8 2 11:45
6 105 10 50 09:00
7 105 2 50 09:30
8 105 11 50 11:00
9 105 30 50 11:30
10 105 32 50 11:45
在下表中,您可以看到user_id 2包含对帖子100和105的评论。 我只需要获得每个post_id的记录,而不是他写的第一条评论。
因此,对于此示例,结果将是针对帖子100的记录4和5以及针对帖子105的8,9,10,因为4,5大于3(user_id 2的第一记录) 并且8,9,10大于7(user_2第一条评论)
明确预期结果:
id post_id user_id to_user_id date time
4 100 5 2 11:30
5 100 8 2 11:45
8 105 11 50 11:00
9 105 30 50 11:30
10 105 32 50 11:45
答案 0 :(得分:1)
可以使用子选择和聚合函数
select * from my_table
where ( post_id, date_time) > (select post_id, max( date_time)
from my_table where user_id =2
group y post_id);
或者如果元组版本没有正常工作,请尝试
select * from my_table as m
inner join (select post_id, max( date_time)
from my_table where user_id =2
group y post_id ) t on m.post_id = t.post_id
where m.date_time > t.date_time