首頁 >資料庫 >mysql教程 >mysql資料分組及排序及SELECT子句順序

mysql資料分組及排序及SELECT子句順序

巴扎黑
巴扎黑原創
2017-05-09 13:50:002398瀏覽

mysql分組和排序

雖然 GROUP BY 和 ORDER BY 經常完成相同的工作,但它們是非常不同的。下表匯總了它們之間的差異。

mysql資料分組及排序及SELECT子句順序

表中所列的第一項差異極為重要。我們常發現用 GROUP BY 分組的資料確實是以分組順序輸出的。但情況並不總是這樣,它並不是SQL規範所要求的。此外,使用者也可能會要求以不同於分組的順序排序。僅因為你以某種方式分組資料(獲得特定的分組聚集值),並不表示你需要以相同的方式排序輸出。應該提供明確的 ORDER BY 子句,即使其效果等同於 GROUP BY子句也是如此。

不要忘記 ORDER BY :一般在使用 GROUP BY 子句時,應該也給出 ORDER BY 子句。這是保證資料正確排序的唯一方法。千萬不要只依賴 GROUP BY 排序資料。 為說明 GROUP BY 和 ORDER BY 的使用方法,請看一個範例。下面的

SELECT 語句類似前面那些範例。它檢索總計訂單價格大於等於50 的訂單的訂單號碼和總計訂單價格:

#輸入:

select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50;

輸出:

mysql資料分組及排序及SELECT子句順序

##為依總計訂單價格排序輸出,需要新增ORDER BY 子句,如下所示:

輸入:

select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50 order by ordertotal;

輸出:

mysql資料分組及排序及SELECT子句順序

分析:在這個例子中, GROUP BY 子句用來按訂單號碼( order_num 列)

分組數據,以便SUM(*) 函數能夠傳回總計訂單價格。 HAVING 子句過濾數據,使得只回傳總計訂單價格大於等於 50 的訂單。最後,用 ORDER BY 子句排序輸出。

SELECT子句順序

下面回顧 SELECT 陳述式中子句的順序。表13-2以 SELECT 語句中

使用時必須遵循的次序,列出迄今所學過的子句。

mysql資料分組及排序及SELECT子句順序

mysql資料分組及排序及SELECT子句順序

【相關推薦】

  1. ##mysql資料分組:建立分組

  2. mysql資料分組:過濾分組


    #

以上是mysql資料分組及排序及SELECT子句順序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn