今天秦赟給我講解了一下Having的用法,感覺很好用,也很簡單,看來以后發展的話還是要多在db上下下功夫:下面是Having的學習筆記
注意:Having和Where的區別,簡單的使用where,如果有group by的話那么就需要用Having在group by后面作為條件,如果在group的前面就需要用where來做限定條件。
HAVING 子句
在 Select 語句中指定,顯示哪些已用 GROUP BY 子句分組的記錄。在GROUP BY組合了記錄后, HAVING會顯示 GROUP BY 子句 分組的任何符合 HAVING 子句的記錄。--比較饒口,基本意識就是分組以后使用Having來做條件
語法
SELECT 字段表
FROM 表
WHERE選擇準則
GROUP BY 分組字段表
[HAVING分組準則]
包含 HAVING 子句的 SELECT 語句具有以下幾個部分:
部分 |
說明 |
fieldlist |
要和任何字段名別名, SQL 合計函數s, 選擇斷定 (ALL, DISTINCT, DISTINCTROW, 或 TOP)或其他SELECT 語句選擇一起檢索的字段名稱。 |
table |
從其中獲取記錄的表的名稱。欲知更多信息請看 FROM 子句. |
selectcriteria |
選擇準則。如果此 語句 包含一個 WHERE 子句, Microsoft Jet數據庫引擎 會在記錄上應用WHERE條件,然后把值分組。 |
groupfieldlist |
用來對記錄分組的字段名,最多有 10 個字段。在 groupfieldlist 中字段名的順序將決定組層次,由最高至最低的層次來分組。 |
groupcriteria |
一個表達式,用以決定應顯示的已分組記錄。 |
說明
HAVING 是可選的。
HAVING 與 WHERE 類似,可用來決定選擇哪個記錄。在使用 GROUP BY對這些記錄分組后,HAVING 會決定應顯示的記錄:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
一個 HAVING 子句最多可包含 40 個表達式,并由諸如 And 及 Or 之類的邏輯操作符來鏈接這些表達式。
實例:select count(*) as c, phone from miscflow group by phone having count(*)=5