1. 程式人生 > >SELECT 語句中Having子句的使用

SELECT 語句中Having子句的使用

Having和Where作用是相近的,只不是一個用於普通欄位的限定,而Having是用於對聚合後結果的限定。

例:

select pname,count(*) as cnt from ar where count(*) >1 group by pname 是錯誤的,正確的應該是
select pname,count(*) as cnt from ar  group by pname having count(*) >1

看了這個例子應該就明白了吧。

幫助裡如是說:

HAVING 子句與 WHERE 子句類似,但只應用於作為一個整體的組(即應用於在結果集中表示組的行),而 WHERE 子句應用於個別的行。查詢可同時包含 WHERE 子句和 HAVING 子句。在這種情況下:

  • 首先將 WHERE 子句應用於表中的個別行或關係圖網格中的表結構化物件。只對符合 WHERE 子句條件的行進行分組。

  • 然後將 HAVING 子句應用於由分組生成的結果集中的行。只有符合 HAVING 子句條件的組才出現在查詢輸出中。只能將 HAVING 子句應用於也出現在 GROUP BY 子句或聚合函式中的列。