mysql數(shù)據(jù)分組與排序及SELECT子句順序
發(fā)表時(shí)間:2023-08-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]mysql分組和排序雖然 GROUP BY 和 ORDER BY 經(jīng)常完成相同的工作,但它們是非常不同的。下表匯總了它們之間的差別。表中列出的第一項(xiàng)差別極為重要。我們經(jīng)常發(fā)現(xiàn)用 GROUP BY 分組的數(shù)據(jù)確實(shí)是以分組順序輸出的。但情況并不總是這樣,它并不是SQL規(guī)范所要求的。此外,用戶也可能會(huì)要...
mysql分組和排序雖然 GROUP BY 和 ORDER BY 經(jīng)常完成相同的工作,但它們是非常不同的。下表匯總了它們之間的差別。
表中列出的第一項(xiàng)差別極為重要。我們經(jīng)常發(fā)現(xiàn)用 GROUP BY 分組的數(shù)據(jù)確實(shí)是以分組順序輸出的。但情況并不總是這樣,它并不是SQL規(guī)范所要求的。此外,用戶也可能會(huì)要求以不同于分組的順序排序。僅因?yàn)槟阋阅撤N方式分組數(shù)據(jù)(獲得特定的分組聚集值),并不表示你需要以相同的方式排序輸出。應(yīng)該提供明確的 ORDER BY 子句,即使其效果等同于 GROUP BY子句也是如此。
不要忘記 ORDER BY :一般在使用 GROUP BY 子句時(shí),應(yīng)該也給出 ORDER BY 子句。這是保證數(shù)據(jù)正確排序的唯一方法。千萬不要僅依賴 GROUP BY 排序數(shù)據(jù)。為說明 GROUP BY 和 ORDER BY 的使用方法,請(qǐng)看一個(gè)例子。下面的
SELECT 語句類似于前面那些例子。它檢索總計(jì)訂單價(jià)格大于等于 50 的訂單的訂單號(hào)和總計(jì)訂單價(jià)格:
輸入:
select order_num,sum(quantity*item_price) as ordertotal from orderitems group by order_num having sum(quantity*item_price) >= 50;
輸出:
為按總計(jì)訂單價(jià)格排序輸出,需要添加 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;
輸出:
分析:在這個(gè)例子中, GROUP BY 子句用來按訂單號(hào)( order_num 列)分組數(shù)據(jù),以便 SUM(*) 函數(shù)能夠返回總計(jì)訂單價(jià)格。 HAVING 子句過濾數(shù)據(jù),使得只返回總計(jì)訂單價(jià)格大于等于 50 的訂單。最后,用 ORDER BY 子句排序輸出。
SELECT子句順序
下面回顧一下 SELECT 語句中子句的順序。表13-2以在 SELECT 語句中使用時(shí)必須遵循的次序,列出迄今為止所學(xué)過的子句。
【相關(guān)推薦】
mysql數(shù)據(jù)分組:創(chuàng)建分組
mysql數(shù)據(jù)分組:過濾分組
以上就是mysql數(shù)據(jù)分組和排序及SELECT子句順序的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。