1. 程式人生 > >使用Having子句

使用Having子句

add 記錄 數據過濾 sele rom gpo log 相同 Go

Having 子句與where子句的功能類似,都是對行進行篩選。但是,where搜索條件是在分組操作之前對記錄進行篩選,然後再由group BY 對篩選後符合條件的行進行分組;而Having搜索條件則是對分組操作之後得到的行進行篩選操作。在Having子句中可以包含聚合函數,而where子句不能。

下面是WhereGroup ByHaving子句的正確順序;

1.Where 子句用來篩選From 子句中指定的操作所產生的行;

2.Group By 子句用來分組Where子句的輸出;

3.Having 子句用來從分組的結果中篩選行。

沒有Group By子句的情況下,Having子句和Where

子句功能完全相同,但是使用Where子句會更高效。因為Where 子句能夠事先把不必要的數據過濾掉,從而減少了在執行select時數據處理量。但是,有些數據事先並不知道是否需要過濾掉,要根據結果才能確定,者時候就必須使用having子句解決

use addinr
    Go
    Select proid,Sum(lin) as to
    from sales
    group By proid
    Having sum(lin)>$100000.00


use addinr
    Go
    Select proid,Sum
    from sales
    where
name=222 Having sum(lin)>$100000.00

使用Having子句