Where/Order by/Ggroup by/Having使用的注意事項

一、Where、Order by、Group by 、having

Where做用對象是:基本表或視圖,從中選出符合條件的元素。

Order by 做用對象是:基本表或視圖,就是排序方式,分爲升序(ASC)和降序(DESC),排序默認爲升序

Group by 做用對象是:基本表或視圖,把對象進行分組(一個或多個字段)。

Having 做用對象是 組,從中選擇符合條件的組

注意事項:函數

  1. Group by 與having連用選出符合條件的分組;
  2. Group by 必須與聚合函數(sum,avg,min,max,cout)一塊兒使用纔有意義,使用時至少須要一個分組標誌;
  3. Group by 與Where 一塊兒使用時:

【3.1】一塊兒使用時,where在前group by 在後;對象

【3.2】注意having和where的用法區別;排序

          (3.2.1)having只能用在group by 以後,對分組的結果進行篩選{即便用having的前提條件是分組};select

           (3.2.2)where確定再group by以前;數據

           (3.2.3)where後的條件表達式裏不允使用聚合函數,而having能夠;查詢

【3.3】當一個查詢語句同事出現了where,group by,having,order by的時候,執行順序和編寫順序是:vi

<Where--group by---having--order by>co

(1) 執行where xx對全表數據作篩選,返回第1個結果集。

(2) 針對第1個結果集使用group by分組,返回第2個結果集。

(3) 針對第2個結果集中的每1組數據執行select xx,有幾組就執行幾回,返回第3個結果集

(4) 針對第3個結集執行having xx進行篩選,返回第4個結果集。

(5) 針對第4個結果集排序。

相關文章
相關標籤/搜索