SQL語句中where和having的區別
where是一個約束聲明,是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據。where字句中不能包含聚組函數。where語句顯示特定的行。
having是一個過濾聲明,是篩選滿足條件的組,即在分組之后過濾數據。having字句中可以包含聚組函數。having語句顯示特定的組。
例1:查詢平均工資大於200000的部門
此時只能使用having,而不能使用where。一來,我們要使用聚合語句avg;二來,我們要對聚合后的結果進行篩選(average > 3000),因此使用where會被告知sql有誤。
例2:查詢每個部門工資大於30000的員工個數
where在group by之前執行,having 在group by 之后執行。
where和having 可以同時存在一個SQL語句中。