MySQL - 计算多少"项目"自上次登录后更改了一个用户

时间:2017-03-31 16:46:24

标签: mysql sql select

我有以下表格:

评论: (注意:修改后的= 00:00:00是因为它曾经是一个日期,现在它是一个mysql日期时间对象)(Original Image):

+ -- + ------------- + ---------- + ------ + ------ +
| id | code_reviewer | modified   | course | review |
+ -- + ------------- + ---------- + ------ + ------ +
| 10 | 11            | null       | 1      | ....   |
| 10 | 12            | null       | 1      | ....   |
| 10 | 13            | null       | 1      | ....   |
| 11 | 12            | null       | 1      | ....   |
| 11 | 13            | null       | 1      | ....   |
| 11 | 14            | null       | 1      | ....   |
| 12 | 10            | 2017-03-31 | 1      | ....   |
| 12 | 11            | null       | 1      | ....   |
| 12 | 14            | null       | 1      | ....   |
| 13 | 10            | null       | 1      | ....   |
| 13 | 12            | null       | 1      | ....   |
| 13 | 14            | null       | 1      | ....   |
| 14 | 10            | 2017-03-31 | 1      | ....   |
| 14 | 11            | null       | 1      | ....   |
| 14 | 13            | null       | 1      | ....   |
+ -- + ------------- + ---------- + ------ + ------ +

用户 :( Original Image):

+ -- + ------------------- + ------- +
| id | last_login          | name    |
+ -- + ------------------- + ------- +
| 3  | 2017-03-31 18:06:11 | Jan     |
| 10 | 2017-03-31 18:22:12 | Mama    |
| 11 | 2017-03-31 22:00:55 | Roman   |
| 12 | 2017-03-31 18:06:01 | Bubi    |
| 13 | 0000-00-00 00:00:00 | Oscar   |
| 14 | 0000-00-00 00:00:00 | Vincent |
+ -- + ------------------- + ------- +

这基本上是评论系统,因此一个用户可以为另一个用户写3条评论。这些评论在"reviews"."review"中存储为JSON字符串。列"reviews"."code_reviewer"列表示撰写评论的人员,"reviews"."id"表示谁将获得code_reviewer的评论。

用户登录/审核后,users.last_login行和reviews.modified会立即更新。

我想要选择的内容:

我基本上想要获得,自从他上次使用以来,某个用户的评价有多少变化。因此,它会在NOW()user.last_login日期之间选择任何内容,并且只选择reviews.id等于用户的{em>行({{1} })。这将用于一种"徽章功能"

**一个好的答案应该包含两个版本的查询:     *一个如上所述,所以用户之间的某些时间的所有评论     *另一个仅返回用户在一个课程的时间间隔内获得的评论(该课程是一个int字段)。示例:我想要在2017-03-31:18:06:11(users.id)和users.last_login之间更新的课程1中的用户Jan(id = 1)的所有评论。

提前致谢, 扬!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,这应该是你正在寻找的

select count(*) 
from users u
left join reviews r
on u.id =r.id
where r.modified > u.last_login and u.id = x