不同点: where 过滤指定的是行不是分组,having过滤的是指定的分组。where 不能使用聚集函数,having可以使用聚集函数。where 在数据分组前进行过滤,having在数据分组后进行过滤。使得where排除的行不包括在分组中,这可能会改变计算值,从而影响having子句中基于这些值过滤的分组。 相同点: having支持所有where操作符。