首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mysql表中获取每个ip的计数和和

从mysql表中获取每个ip的计数和和
EN

Stack Overflow用户
提问于 2014-09-10 15:55:42
回答 2查看 217关注 0票数 1

我一直在寻找从一个表生成一个IP地址报告,然后插入到另一个表中,但是还没有成功,也没有找到一个资源,这将使我能够这样做。

我的IP表包含许多重复的ip,并希望每一个不同的ip都有一个分钟和计数(名称)。

代码语言:javascript
复制
ip                  name    minutes
199.199.199.199     nick    23
199.199.199.200     nick    3
199.199.199.200     bob     34
199.199.199.201     bob     56
199.199.199.201     sue     12
199.199.199.202     sue     45
199.199.199.202     helen   65
199.199.199.202     helen   15

我的当前方法如下

代码语言:javascript
复制
SELECT DISTINCT(distinct) as ip FROM `ip.ip_stats`;

在我的PHP中,我将每个不同的ip地址添加到一个数组中

代码语言:javascript
复制
$arr = array("199.199.199.199","199.199.199.200","199.199.199.201","199.199.199.202");

生成数组后,我将遍历数组中的每个

代码语言:javascript
复制
foreach($arr as $ip){
     SQL ="SELECT COUNT(name) as cnt, SUM(minutes) as sum FROM `ip.ip_stats` WHERE ip='$ip'";
     $result = mysqli_query($con, $query);

     while ($row = mysqli_fetch_assoc($result)) {
          mysqli_query($con, "INSERT INTO ip.ip_report ( ip, count, sum )   
          VALUES ( $ip, $cnt, $sum ) 
     }
}

因此,在得到数组中每个ip的和数之后,我循环遍历并插入报表表。

我的主要问题是它的大小和运行所需的时间,我有超过1000万行的数据,每分钟只做3-5行(大表然后是我的例子)。

有没有一种方法可以使用mysql来选择不同的并生成报告?有实现以下查询的方法吗?使用循环还是同时使用?

代码语言:javascript
复制
SELECT SUM(minutes), COUNT(name) FROM ( SELECT DISTINCT(ip) FROM ip.ip_stats) ?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-10 15:58:42

我相信你要的是:

代码语言:javascript
复制
SELECT s.ip, s.name, SUM(s.minutes) AS TotalMinutes, COUNT(s.name) AS NameCount
FROM ip_stats s
GROUP BY s.ip, s.name
票数 0
EN

Stack Overflow用户

发布于 2014-09-10 16:02:16

代码语言:javascript
复制
SELECT
    ip,
    COUNT(name) as cnt,
    SUM(minutes) as sum
FROM `ip.ip_stats`
GROUP BY ip
;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25769901

复制
相关文章

相似问题

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