MySQL在任何24小时窗口内检查X记录

时间:2014-10-21 08:43:56

标签: php mysql sql datetime count

我有一个系统可以在表中存储失败的登录尝试,并记录事件的日期时间。我需要的是一种查询数据库以检查在任何24小时内是否有任何用户X尝试失败的方法。

例如,设x = 5.我需要检查是否有任何用户,如果在任何时间点有一个24小时的窗口,此表中的记录数为5或更多。 24小时的时间段可以是从当前时间到24小时之前,或者可以是例如上个月在相隔24小时的任何两个时间点之间。

这可以通过简单的MySQL查询来实现吗?我见过的大多数帖子都是关于在过去24小时内对记录进行计数,这并不是我所需要的。

1 个答案:

答案 0 :(得分:1)

SELECT
yt1.userId
FROM
your_table yt1
INNER JOIN your_table yt2 ON yt1.userId = yt2.userId 
AND yt2.fail_date <= yt1.fail_date 
AND yt2.fail_date >= yt1.fail_date - INTERVAL 24 HOUR
GROUP BY yt1.userId
HAVING COUNT(*) >= 5