mysql分組和排序
雖然 GROUP BY 和 ORDER BY 經常完成相同的工作,但它們是非常不同的。下表匯總了它們之間的差異。
表中所列的第一項差異極為重要。我們常發現用 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;
輸出:
##為依總計訂單價格排序輸出,需要新增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;輸出: 分析:在這個例子中, GROUP BY 子句用來按訂單號碼( order_num 列)
分組數據,以便SUM(*) 函數能夠傳回總計訂單價格。 HAVING 子句過濾數據,使得只回傳總計訂單價格大於等於 50 的訂單。最後,用 ORDER BY 子句排序輸出。
SELECT子句順序
下面回顧 SELECT 陳述式中子句的順序。表13-2以 SELECT 語句中使用時必須遵循的次序,列出迄今所學過的子句。
【相關推薦】以上是mysql資料分組及排序及SELECT子句順序的詳細內容。更多資訊請關注PHP中文網其他相關文章!