gpt4 book ai didi

php - 如何计算数据库中的(重复次数)数量

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:26 25 4
gpt4 key购买 nike

我正在编写一些 PHP/MySQL 来检测过多的站点访问。虽然我发现对于任何给定的 IP 地址,检测该人在 24 小时内访问了多少次,以及他们是否超过了访问最大值的某个次数,我发现它很简单,但我正在努力解决的是一些 sql挑出整体趋势——有多少 IP 的每个访问次数超过阈值次数。请考虑以下简化的数据库表,我希望它能解释得更清楚。

 VisidID        VisitIP      VisitDate
----------------------------------
1 n.n.n.01 (yesterday)
2 n.n.n.02 (today)
3 n.n.n.01 (today)
4 n.n.n.03 (today)
5 n.n.n.03 (today)
6 n.n.n.03 (today)
7 n.n.n.04 (today)
8 n.n.n.05 (today)
9 n.n.n.04 (today)
10 n.n.n.06 (today)
11 n.n.n.05 (today)
12 n.n.n.07 (today)
------------------------------------

因此,假设我将最大允许访问阈值设置为 2(只是为了让我的示例表保持较小),我从这个表查询中寻找的结果是“3”,因为有三个今日访问量均达到或超过2次访问阈值的IP地址(n.n.n.03、n.n.n.04和n.n.n.05)。

我如何在 MySQL 查询中捕获它,它是一个快速高效的运行查询还是一个繁重的查询?

最佳答案

使用 HAVING 子句,此查询将返回计数高于 2 的那些 -

SELECT `VisitIP`, COUNT(`VisitIP`) AS `CountIP`
FROM `table`
GROUP BY `VisitIP`
HAVING `CountIP` > 2

要计算满足条件的总数,您可以这样做 -

SELECT COUNT(*) AS `TotalOverTwo` FROM
(SELECT `VisitIP`, COUNT(`VisitIP`) AS `CountIP`
FROM `table`
GROUP BY `VisitIP`
HAVING `CountIP` > 2
) `table`

关于php - 如何计算数据库中的(重复次数)数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com