sql从用户的最新评论中选择更新的评论

时间:2018-12-17 12:38:53

标签: mysql sql

我可能想要不可能的事,但我们希望有可能。

因此,我想从用户的上次评论日期中获取所有较新的评论。

我认为不需要很多sql详细信息。

  1. 用于创建论坛主题(id,user_id,标题,内容,日期)的论坛数据库

  2. 评论数据库(id,user_id(发表评论的用户),forum_id(他评论到哪个论坛...等于论坛数据库中的id),日期)

任何帮助将不胜感激。

例如:评论数据库:

 id user_id forum_id date 
  1       1        1 2018-12-16 14:00:00
  2       2        1 2018-12-16 14:50:00
  3       1        1 2018-12-16 15:35:00
  4       5        1 2018-12-16 16:50:00
  5       2        1 2018-12-16 17:50:00

预期结果: 假设我们要获取用户1的最新注释中的所有较新注释,因此结果应为id 4和id 5,因为它们是对user_id 1的较新注释。

另一个例子:

 id user_id forum_id date
  1       1        2 2018-12-16 18:10:00
  2       3        2 2018-12-16 19:25:00
  3       1        1 2018-12-17 10:00:00

预期结果: 我们仍然需要用户1的所有新评论。结果应为ID 2,因为它比他对forum_id 2的评论新。

戈登的答案非常适合解决以下示例:

select c.*
from comments c
where c.datetime > (select max(c2.datetime)
                from comments c2
                where c2.user_id = ?
               );

但这并不能解决另一个问题。如果用户在评论表中有最新评论,则此查询不会给出任何结果。但是很容易发生的是,给定的用户在其他论坛主题中也有评论,这些评论可能具有较新的答案。

1 个答案:

答案 0 :(得分:1)

这是您想要的吗?

select c.*
from comments c
where c.datetime > (select max(c2.datetime)
                    from comments c2
                    where c2.user_id = ?
                   );

?用于描述特定用户的参数。