1. 程式人生 > >關於mysql中 group by , order by , where, having 語句的區別與運用

關於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的資料。

    

以上就是關於這幾個語句的具體使用,僅供學習交流,有錯忘指出。