select substr(ip, 1, instr(substr(ip, instr(ip, ".")+1, length(ip)), ".") + instr(ip, ".") - 1) as ip_flag,count(*) as num from log group by ip_flag order by num desc
成都创新互联主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、成都营销网站建设、网站程序开发、HTML5响应式重庆网站建设公司、成都做手机网站、微商城、网站托管及成都网站维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都宴会酒店设计行业客户提供了网站制作服务。
思路:
1、先查ip第一个点的位置
select instr(ip, ".") from log
2、然后把第一个点后边的字符串拆出来
select substr(instr(ip, ".")+1, length(ip)) from log
3、继续找第二步里边拆出来的字符串所包含的第一个点(即原ip的第二个点)
select instr(substr(instr(ip, ".")+1, length(ip)), ".") from log
4、通过第三步就知道ip的第二个点的位置
select instr(substr(instr(ip, ".")+1, length(ip)), ".") + instr(ip, ".") from log
5、把ip的前两段拆出来
select substr(ip, 1, instr(substr(ip, instr(ip, ".")+1, length(ip)), ".") + instr(ip, ".") - 1) as ip_flag from log
6、group by得到的ip_flag,并计数
select substr(ip, 1, instr(substr(ip, instr(ip, ".")+1, length(ip)), ".") + instr(ip, ".") - 1) as ip_flag,count(*) as num from log group by ip_flag order by num desc
使用array_count_values函数可以找出数组中相同值出现的次数,array_count_values用法如下:
array_count_values
—
统计数组中所有的值出现的次数
array
array_count_values
(
array
$input)
array_count_values()
返回一个数组,该数组用
input
数组中的值作为键名,该值在:input
数组中出现的次数作为值
input:统计这个数组的值
返回值:
返回一个关联数组,用
input数组中的值作为键名,该值在数组中出现的次数作为值。
示例:
?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?
以上例程会输出:
Array
(
[1] = 2
[hello] = 2
[world] = 1
)需要取出哪个值的次数,就在返回的数组中获取对应的key值即可,例如示例中array_count_values($array)['hello']就可以取出数组中hello的个数。
SELECT `username`,COUNT(`username`) AS c FROM `answer` GROUP BY `username` ORDER BY c DESC LIMIT 10
这样可以查询出 那些username 和出现的次数
这种复杂的表查询可以用
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model-query("这里是上面的sql语句");