我一直在尋找從一個表生成一個IP地址報告並插入到另一個表中,但尚未成功或找到一個資源,這將允許我這樣做。從mysql表中獲取每個ip的計數和總數
其中包含許多重複的IP的,想分計數(名稱)的總和(分鐘)我的IP表,其中每一個不同的IP
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
我當前的方法如下
SELECT DISTINCT(distinct) as ip FROM `ip.ip_stats`;
以我PHP,我添加的每個所述不同的IP addreses的成陣列
$arr = array("199.199.199.199","199.199.199.200","199.199.199.201","199.199.199.202");
一旦生成陣列I陣列
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的總和與計數陣列中我然後依次通過,並插入到報告表後。
我的主要問題是運行這個軟件需要多少時間和大量的時間,我有超過一千萬行的數據,每分鐘只做3-5次(大表,然後是我的例子)。
有沒有辦法使用mysql來選擇不同並生成報告? 有沒有辦法實現下面的查詢?使用循環還是while?
SELECT SUM(minutes), COUNT(name) FROM (SELECT DISTINCT(ip) FROM ip.ip_stats) ?
感謝靈兒,這將很好地工作,我完全忘了GROUP BY,這絕對是我一直在尋找答案! – renfley 2014-09-10 16:14:02