首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算数据库中的重复数

问如何计算数据库中的重复数
EN

Stack Overflow用户
提问于 2015-02-17 18:25:10
回答 2查看 83关注 0票数 0

我正在编写一些PHP / MySQL来检测过多的站点访问。虽然我觉得很简单,对于任何一个给定的IP地址,这个人在24小时内访问了多少次,所以他们是否超过了某个数字,也就是访问次数的最大值,但我所面对的是一些sql,它将判断出总体趋势--每个IP的访问次数都超过了这段时间内的阈值次数。请考虑以下简化的数据库表,希望能更清楚地解释。

代码语言:javascript
复制
 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‘,因为有三个IP地址(n.03、n.04和n.05),它们的访问都相当于或超过了2次访问的访问阈值。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-17 18:37:01

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

代码语言:javascript
复制
SELECT `VisitIP`, COUNT(`VisitIP`) AS `CountIP`
FROM `table`
GROUP BY `VisitIP`
HAVING `CountIP` > 2

为了计算满足条件的总人数,你可以这样做-

代码语言:javascript
复制
SELECT COUNT(*) AS `TotalOverTwo` FROM
    (SELECT `VisitIP`, COUNT(`VisitIP`) AS `CountIP`
     FROM `table`
     GROUP BY `VisitIP`
     HAVING `CountIP` > 2 
    ) `table`
票数 2
EN

Stack Overflow用户

发布于 2015-02-17 18:33:38

只需写这个简单的查询,你的问题就会解决!

代码语言:javascript
复制
select count(`VisitIP`) as totalVisits from table group by(`VisitDate`) HAVING `totalVisits` > 2;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28568466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档