天天看點

關于資料庫where和having的差別、group by 與having如何使用。

--舉例子說明:查詢table表查詢每一個班級中年齡大于20,性别為男的人數

select

COUNT

(*)

as

'>20歲人數'

,classid  

from

Table1 

where

sex=

'男'

group

by

classid,age 

having

age>20 

--需要注意說明:當同時含有where子句、group by 子句 、having子句及聚集函數時,執行順序如下:

--執行where子句查找符合條件的資料;

--使用group by 子句對資料進行分組;對group by 子句形成的組運作聚集函數計算每一組的值;最後用having 子句去掉不符合條件的組。

--having 子句中的每一個元素也必須出現在select清單中。有些資料庫例外,如oracle.

--having子句和where子句都可以用來設定限制條件以使查詢結果滿足一定的條件限制。

--having子句限制的是組,而不是行。where子句中不能使用聚集函數,而having子句中可以。