1、Where、Order by、Group by 、having Where作用對象是:基本表或視圖,從中選出符合條件的元素。 Order by 作用對象是:基本表或視圖,就是排序方式,分為升序(ASC)和降序(DESC),排序預設為升序 Group by 作用對象是:基本表或視圖,把對象進行分組 ...
1、Where、Order by、Group by 、having
Where作用對象是:基本表或視圖,從中選出符合條件的元素。
Order by 作用對象是:基本表或視圖,就是排序方式,分為升序(ASC)和降序(DESC),排序預設為升序
Group by 作用對象是:基本表或視圖,把對象進行分組(一個或多個欄位)。
Having 作用對象是 組,從中選擇符合條件的組
註意事項:
- Group by 與having連用選出符合條件的分組;
- Group by 必須與聚合函數(sum,avg,min,max,cout)一起使用才有意義,使用時至少需要一個分組標誌;
- Group by 與Where 一起使用時:
【3.1】一起使用時,where在前group by 在後;
【3.2】註意having和where的用法區別;
(3.2.1)having只能用在group by 之後,對分組的結果進行篩選{即使用having的前提條件是分組};
(3.2.2)where肯定再group by之前;
(3.2.3)where後的條件表達式里不允使用聚合函數,而having可以;
【3.3】當一個查詢語句同事出現了where,group by,having,order by的時候,執行順序和編寫順序是:
<Where--group by---having--order by>
(1) 執行where xx對全表數據做篩選,返回第1個結果集。
(2) 針對第1個結果集使用group by分組,返回第2個結果集。
(3) 針對第2個結果集中的每1組數據執行select xx,有幾組就執行幾次,返回第3個結果集
(4) 針對第3個結集執行having xx進行篩選,返回第4個結果集。
(5) 針對第4個結果集排序。