where、having之間的區別和用法

聚合函數是比較where、having 的關鍵。 
開門見山。where、聚合函數、having 在from後面的執行順序:sql

where>聚合函數(sum,min,max,avg,count)>having函數

列出group by來比較兩者。()因where和having 在使用group by時問的最多) 
若須引入聚合函數來對group by 結果進行過濾 則只能用having。(此處很少說,本身想 是先執行聚合函數仍是先過濾 而後比對我上面列出的執行順序 一看便知)spa

select sum(score) 
from student  
where sex='man' 
group by name 
having sum(score)>210

注意事項 : 
一、where 後不能跟聚合函數,由於where執行順序大於聚合函數。 
二、where 子句的做用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組以前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。 
三、having 子句的做用是篩選知足條件的組,即在分組以後過濾數據,條件中常常包含聚組函數,使用having 條件顯示特定的組,也能夠使用多個分組標準進行分組。
 code

相關文章
相關標籤/搜索