首页新闻找找看学习计划

COUNT(*)是根据分组来计数的吗?

0
[待解决问题]

我的疑问来自于一条sql语句

SELECT BB FROM `test` GROUP BY BB HAVING COUNT(*) >= 1;

在这条语句里面,如果删除 GROUP BY BB,那么结果只是表中第一行数据

 

如果加上 GROUP BY BB,那么COUNT(*)就会按照分组给出当前的行数

 

那么问题来了,COUNT(*)的计算范围是什么?

fornobody的主页 fornobody | 菜鸟二级 | 园豆:206
提问于:2017-05-03 13:21
< >
分享
所有回答(2)
0

根据group by进行计算

狼爷 | 园豆:1192 (小虾三级) | 2017-05-03 13:55

没有具体定义吗?我觉得这个范围并不是书上说的,只计算表中所有数据行数,而是计算表中分组中数据的行数

支持(0) 反对(0) fornobody | 园豆:206 (菜鸟二级) | 2017-05-03 15:26
0

count(*)返回的是表中满足条件的行的数量,在这里的条件就是通过group by分的组,就这一条SQL语句来说就是数据表通过BB列进行分组,每一分组的数据行的数量>=1的select出来

GeaoZhang | 园豆:204 (菜鸟二级) | 2017-05-03 15:55

我没有返回count啊,count只是在条件中用了。所以,他本身就是条件的一部分,又何来满足条件一说?

支持(0) 反对(0) fornobody | 园豆:206 (菜鸟二级) | 2017-05-03 16:00

@fornobody: count是一个组函数,是用来统计行的数量的。就你这条SQL来说,首先是select BB列,然后对BB列里的数据进行group by,接着对分好的组进行count计算统计每个组里数据行的数量,再接着就是比较:分的组的数据行数量>=1的返回结果集,select该BB组。

支持(0) 反对(0) GeaoZhang | 园豆:204 (菜鸟二级) | 2017-05-03 16:08

@fornobody: http://www.cnblogs.com/geaozhang/p/6745147.html#count

支持(1) 反对(0) GeaoZhang | 园豆:204 (菜鸟二级) | 2017-05-03 16:12

@GeaoZhang: 多谢多谢,原来count(*)是根据过滤结果统计计数啊

支持(0) 反对(0) fornobody | 园豆:206 (菜鸟二级) | 2017-05-03 19:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册