例如,进行分组语句:
select year,count(id) num from tblPlantProduce
group by year
在这条语句中若要筛选出年份>2005年的有两种方式:
1.group 前面加入 where条件:where year>2005
2.group by year后面加入having条件:having year>2005
若想要筛选出id>5000的就只能有一种方式了:
group 前面加where id>5000
若想要筛选出num>5000的也同样只有一种方式:
group by year 后面加入having count(id)>5000
从这里可以看出sql语句执行group by语法顺序是这样的:
1.首先进行where条件筛选;
2.再进行group by 分组,获取前面select 出来的字段,可以看做是一个临时新表;
3.然后having对这个临时新表进行筛选,所以只能筛选临时新表中拥有的字段。