關於mysql中 group by , order by , where, having 語句的區別與運用
最近一直在忙著和資料庫有關的一些工作,這幾天在寫儲存過程的時候,一些mysql的語句突然感覺有些不太明白,就是group by , order by ,where , having這些語句,這次通過一個例項來總結和歸納一下,這幾個語句的用法,僅供以後參考學習。
一. 首先以字面形式闡述一下這幾個語句的功能:
group by:從英文上理解 就是分組的意思。需要和 聚合函式(例如:max(),count(),avg()等)配合使用,使用時至少有一個分組標識欄位(例如某一列的列名)。
oder by :從英文上理解就是排序。一般後面跟上某一列的列名,然後查詢到的資料會以該列的大小順序進行排序顯示,預設的是ASC(從小到大排列),desc(大到小排列)
where: 對查詢到的內容進行篩選,where後面跟上限定條件,where使用在分組和排序之後。
having:作用是篩選滿足條件的組,即在分組之後過濾資料,條件中經常包含聚組函式,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。
二. 下面來看一個例子:
首先建立一張,表名為STAFF.
1.假如我們要列出每個部門最高薪水的結果(group by的使用)。
結果顯示兩列,分別是查詢語句中需要的兩個列,group by後面指定按照dept分組,正好為三組。注意select語句後面的兩個查詢物件需要用逗號隔開。
2. 假如我們要按照日期從小到大列出表的資訊(order by 的使用)。
如顯示結果資料按照日期的大小從小到大依次列出。
3.假如我們只想顯示開發部們的資訊(where的使用).
如上顯示結果,where後邊的限定條件為開發部(字元使用單引號)。
4.假如我們使用group by 分組過後,如1中,如果想篩選出分組後max(salary)大於3000的一組。
如上結果所示,篩選出分組後需要列出的組。
5. 下面來在一個例子中綜合使用這幾個語句。
假如我們要倒序顯示日期大於 2010-10-03中 ,每個部門中工資最高且大於2000的資料。
以上就是關於這幾個語句的具體使用,僅供學習交流,有錯忘指出。