表评论: (注意:修改后的= 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)的所有评论。
提前致谢, 扬!
答案 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