如何从第二次登录后获取更改的项目?

时间:2017-04-05 13:19:42

标签: mysql sql database

我有以下两张表:

名为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查询获得所需的结果?

编辑1:

reviews的示例数据:https://hastebin.com/uhoyupuvem.sqllogin_history的示例数据:https://hastebin.com/ququzequsu.sql

2 个答案:

答案 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)

您可以在查询中使用LIMITORDER BY的组合来选择第二个最新条目。

SELECT `for_date`
FROM `login_history`
WHERE `user` = 10
ORDER BY `for_date` DESC
LIMIT 1,1

https://dev.mysql.com/doc/refman/5.7/en/select.html