最近做项目有一个这样的需求
统计60内 被封停的ip数量大于5个
实现方法如下:
SELECT
count(id) AS num
FROM
ddos_network_ipstatus
WHERE
ip_block_time BETWEEN date_add(now(), INTERVAL - 60 SECOND)
AND now()
HAVING
num > 5;
注释
SELECT
count(id) AS num -- 统计60秒内数据
FROM
ddos_network_ipstatus -- 表名
WHERE
ip_block_time BETWEEN date_add(now(), INTERVAL - 60 SECOND) -- ip_block_time--表示需要过滤的时间字段, date_add(now(), INTERVAL - 60 SECOND) --表示当前时间减去60 ,now()--表示当前时间
AND now()
HAVING
num > 5; -- 查询后条件筛选 (这里表示数据大于5条记录)