where和having區別:
- having只能用在group by之后,對分組后的結果進行篩選(即使用having的前提條件是分組)。
- where肯定在group by 之前,即也在having之前。
- where后的條件表達式里不允許使用聚合函數,而having可以。
Where是一個約束聲明,在查詢數據庫的結果返回之前對數據庫中的查詢條件進行約束,即在結果返回之前起作用,且where后面不能使用聚合函數。
Having是一個過濾聲明,所謂過濾是在查詢數據庫的結果返回之后進行過濾,即在結果返回之后起作用,並且having后面可以使用聚合函數。
所謂聚合函數,是對一組值進行計算並且返回單一值的函數:sum---求和,count---計數,max---最大值,avg---平均值等。