我有以下两张表:
名为reviews
的表格:
(一个ID可以多次存在)
此ID表示对具有id的用户进行以下REVIEW。
名为login_history
的表:
自用户第二次登录以来,如何获得评论数量(一次评论由表格id
中的reviews
表示)?
让我们说一个用id
19登录的用户。当他登录时,一个新值将被插入login_history
。这看起来像2017-04-05 19:00:00, 19
。然后,对他的评论进行编辑,modified
值会发生变化。如果用户然后注销并重新登录,他应该看到某种消息说:"自上次登录后编辑了1个新评论"。
关于这个的困难部分是在运行查询之前将新行插入login_history
,例如在用户访问"新评论"页。
如何通过一个SQL查询获得所需的结果?
表reviews
的示例数据:https://hastebin.com/uhoyupuvem.sql
表login_history
的示例数据:https://hastebin.com/ququzequsu.sql
答案 0 :(得分:1)
首先:
查找上次登录日期(从skayp回复中复制):
SELECT `for_date`
FROM `login_history`
WHERE `user` = 10
ORDER BY `for_date` DESC
LIMIT 1,1
然后将此结果用作比较的一部分:
SELECT * FROM `test`.`reviews` WHERE `modified` > (SELECT `for_date`
FROM `login_history`
WHERE `user` = 10
ORDER BY `for_date` DESC
LIMIT 1,1)
因此,您可以在上次第二次登录之前完成此用户的所有修改。
答案 1 :(得分:0)
您可以在查询中使用LIMIT
和ORDER BY
的组合来选择第二个最新条目。
SELECT `for_date`
FROM `login_history`
WHERE `user` = 10
ORDER BY `for_date` DESC
LIMIT 1,1