显示自用户上次评论后的天数

时间:2017-11-06 12:02:41

标签: mysql sql mysqli

我有两个包含多行的表。第一个称为comments,具有以下结构:

user_id   last_commented
........................
9239289   2017-11-06
4239245   2017-11-05
4239245   2017-11-03
6239223   2017-11-02
1123139   2017-11-04

第二个名为users,具有以下结构:

user_id   user_name   user_status
.................................
9239289   First Name   0
4239245   First Name2  2
6239223   First Name3  1
1123139   First Name4  2

我需要一个查询,显示过去3天未添加评论的用户,user_status等于2,并显示自上次评论后的天数。

这是我目前的查询:

select u.*
from users u
where not exists (
   select 1
   from comments c
   where c.user_id = u.user_id and last_commented > DATE(NOW()) - INTERVAL 3 DAY
) and user_status = 2

正确输出过去3天未评论过的用户。如何修改它以显示自上次评论以来的天数?

1 个答案:

答案 0 :(得分:3)

如果您需要自上次评论以来的天数,那么您将需要join,某种类型:

select u.*, datediff(curdate(), last_commented)
from users u left join
     comments c
     on c.user_id = u.user_id
where u.status = 2
group by u.user_id
having max(last_commented) < curdate() - interval 3 day or
       max(last_commented) is null;

此版本包括完全没有评论的用户。