Having用法以及其和Where区别

例如,进行分组语句:

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对这个临时新表进行筛选,所以只能筛选临时新表中拥有的字段。

原文地址:https://www.cnblogs.com/zhoushiya/p/12107365.html