假设我们有一个名为logs的表,其中包含以下列:hostname(主机名),log_date(日志日期)和log_time(日志时间)。
我们可以使用以下SQL查询来找出在任何给定日期发生了5分钟间隔的多个“init failure”日志的主机名:
SELECT hostname
FROM logs
WHERE log_date = 'YYYY-MM-DD'
GROUP BY hostname
HAVING COUNT(*) > 1
AND TIMESTAMPDIFF(MINUTE, MIN(log_time), MAX(log_time)) >= 5
AND EXISTS (
SELECT 1
FROM logs l2
WHERE l2.hostname = logs.hostname
AND l2.log_date = logs.log_date
AND l2.log_time > logs.log_time
AND l2.log_time <= DATE_ADD(logs.log_time, INTERVAL 5 MINUTE)
AND l2.log_message = 'init failure'
)
请注意,将查询中的'YYYY-MM-DD'替换为要查询的特定日期。
此查询的思路是:
这样,最终结果将包含在指定日期发生了5分钟间隔的多个“init failure”日志的主机名。