我的疑问来自于一条sql语句
SELECT BB FROM `test` GROUP BY BB HAVING COUNT(*) >= 1;
在这条语句里面,如果删除 GROUP BY BB,那么结果只是表中第一行数据
如果加上 GROUP BY BB,那么COUNT(*)就会按照分组给出当前的行数
那么问题来了,COUNT(*)的计算范围是什么?
根据group by进行计算
没有具体定义吗?我觉得这个范围并不是书上说的,只计算表中所有数据行数,而是计算表中分组中数据的行数
count(*)返回的是表中满足条件的行的数量,在这里的条件就是通过group by分的组,就这一条SQL语句来说就是数据表通过BB列进行分组,每一分组的数据行的数量>=1的select出来
我没有返回count啊,count只是在条件中用了。所以,他本身就是条件的一部分,又何来满足条件一说?
@fornobody: count是一个组函数,是用来统计行的数量的。就你这条SQL来说,首先是select BB列,然后对BB列里的数据进行group by,接着对分好的组进行count计算统计每个组里数据行的数量,再接着就是比较:分的组的数据行数量>=1的返回结果集,select该BB组。
@fornobody: http://www.cnblogs.com/geaozhang/p/6745147.html#count
@GeaoZhang: 多谢多谢,原来count(*)是根据过滤结果统计计数啊