having与where都是用来过滤查询结果集的,不同的是,where是用来对查询结果进行过滤,having是对分组进行过滤,但是
where的执行级别要比having高,也就是说,会先执行where的过滤条件,再执行having过滤条件。
有同学可能会想,既然where的优先级高,那把过滤条件全部放在where字句后面不就行了,这样想是不对的!
where后面是不能跟聚合函数过滤条件的,因为有聚合函数就必定要分组。
然而having是与group by配合使用的,所以可以在 having 关键字后面加聚合函数过滤条件。