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

Php MySQL在任何24小时窗口内检查X记录,php,mysql,sql,datetime,count,Php,Mysql,Sql,Datetime,Count,我有一个系统,它将失败的登录尝试存储在一个表中,并记录事件的日期时间。我需要的是一种查询数据库的方法,以检查任何用户在任何24小时内是否有X次失败的尝试 例如,设x=5。我需要检查是否有任何用户在任何时间点有一个24小时窗口,其中该表中的记录数为5或更多。24小时周期可以是从当前时间到24小时之前,或者可以是例如上个月间隔24小时的任意两个时间点之间的时间 这可以通过一个简单的MySQL查询实现吗?我看到的大多数线程都是关于计算过去24小时内的记录的,这并不是我所需要的。SELECT SELEC

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

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

这可以通过一个简单的MySQL查询实现吗?我看到的大多数线程都是关于计算过去24小时内的记录的,这并不是我所需要的。

SELECT
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
yt1.userId 从…起 您的表yt1 在yt1.userId=yt2.userId上内部连接您的_表yt2 和yt2.fail_date=yt1.fail_date-间隔24小时 按yt1.userId分组 计数(*)大于等于5的