SQL中where與having的區別

1.where和having的區別
2.聚合函數和group by 
3.where 和having的執行順序


1.where和having的區別


where:
where是一個約束聲明,使用where來約束來自數據庫的數據,where 後面要跟的是數據表裏的字段;
where是在結果返回之前起作用的,也就是說where是從數據表中的字段直接進行的篩選的;
where後不能跟聚合函數。
having:
having是一個過濾聲明,having只是根據前面查詢出來的是什麼就可以後面接什麼;
在查詢返回結果集以後,對查詢結果進行的過濾操作,having是從前面篩選的字段再篩選;
在having中可以使用聚合函數。 

結論

1.分組後篩選的時候 用having 當分組前先篩選的時候 用where

2.其它情況用where
-----------------------------------------------------
用having就一定要和group by連用,
用group by不一有having (它只是一個篩選條件用的)

只要條件裏面的字段, 不是表裏面原先有的字段就需要用having

SQL在查詢表的時候先把查詢的字段放到了內存裏,而where查詢的時候是從表裏面查的,其餘需要用having

2.聚合函數和group by

group by 必須和聚合函數一起用

聚合函數就是例如SUM, COUNT, MAX,MIN, AVG等對一組(多條)數據操作的函數,需要配合group by 來使用,也可以單獨使用

求表中總條數,某列和。

3.where、聚合函數、having 在from後面的執行順序:

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章