ON、WHERE、HAVING的區別,wherehaving

來源:互聯網
上載者:User

ON、WHERE、HAVING的區別,wherehaving

           ON 、WHERE、HAVING都能通過限制條件式篩選資料,但他們的使用及其不同。下面我們來分析三者之間的區別。

1.       ON 和WHERE

        所有的查詢都回產生一個中間臨時報表,查詢結果就是從返回臨時報表中得到。ON和WHERE後面所跟限制條件的區別,主要與限制條件起作用的時機有關,ON根據限制條件對資料庫記錄進行過濾,然後生產暫存資料表;而WHERE是在暫存資料表生產之後,根據限制條件從暫存資料表中篩選結果。

           因為以上原因,ON和WHERE的區別主要有下:

1)  返回結果:在左外(右外)串連中,ON會返回左表(右表)中的所有記錄;而WHERE中,此時相當於inner join,只會返回滿足條件的記錄(因為是從暫存資料表中篩選,會過濾掉不滿足條件的)。

2)  速度:因為ON限制條件發生時間較早,暫存資料表的資料集要小,因此ON的效能要優於WHERE。

2.       HAVING和WHERE

          HAVING和WHERE的區別也是與限制條件起作用時機有關,HAVING是在聚集合函式計算結果出來之後篩選結果,查詢結果只返回合格分組,HAVING不能單獨出現,只能出現在GROUP BY子句中。;而WHERE是在計算之前篩選結果,如果聚集合函式使用WHERE,那麼聚集合函式只計算滿足WHERE子句限制條件的資料,例如:

     SELECT COUNT(id) FROM db_equip WHERE tb_equip_type = ‘2’;

           Count計算的結果是首先篩選裝置類型為2的的裝置,然後統計裝置類型為2類型的數量。

       在使用和功能上,HAVING和WHERE有以下區別:

1)  HAVING不能單獨出現,只能出現在GROUP BY子句之中;WHERE即可以和SELECT等其他子句搭配使用,也可以和GROUP BY子句搭配使用,WHERE的優先順序要高於彙總函式高於HAVING。

2)  因為WHERE在聚集合函式之前篩選資料,HAVING在計算之後篩選分組,因此WHERE的查詢速度要比HAVING的查詢速度快。

3.       總結        ON、WHERE、HAVING的主要差別是其子句中限制條件起作用時機引起的,ON是在生產暫存資料表之前根據條件式篩選記錄,WHERE是從生產的暫存資料表中篩選資料,而HAVING是對暫存資料表中滿足條件的資料,進行計算分組之後,通過HAVING限制語句篩選分組,返回結果是滿足HAVING子句限制的分組。
資料庫中where與having不同

having 和where 都是用來篩選用的
having 是篩選組 而where是篩選記錄

他們有各自的區別

1》當分組篩選的時候 用having

2》其它情況用where
-----------------------------------------------------
用having就一定要和group by連用,
用group by不一有having (它只是一個篩選條件用的)
-------------------------------------------------------
例子
表結構
部門編號 姓名 工資
1 aa 2000
2 bb 1200
1 cc 2100
2 dd 1800
1 ee 2100
3 ff 8000
2 gg 2200
3 hh 4500

查詢有多個員工的工資不低於2000的部門編號
(就是說如果一個部門的員工大於2000的人數有兩個或兩個以上就查詢出來)

select 部門編號,count(*) from 員工資訊表
where 工資>=2000
group by 部門編號
having count(*)>1

where 針對每一條記錄篩選
而 having 對同一個部門的分組
count(*)>1 計算多於兩個的部門

查詢結果為

1 3
3 2
另外,站長團上有產品團購,便宜有保證
 
SQL語言中where與having有什不同?

--補充
select ··· from ···
where ···(只能對分組前的屬性進行篩選)
group by ···
having ···(只能對分組後的每個組的整體屬性進行篩選,用彙總函式體現)
····
--不使用group by就預設表的整體為一組
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.