明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

mysql數(shù)據(jù)分組與排序及SELECT子句順序

[摘要]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)常完成相同的工作,但它們是非常不同的。下表匯總了它們之間的差別。

QQ截圖20170509132019.png

表中列出的第一項(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;

輸出:

QQ截圖20170509132243.png

為按總計(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;

輸出:

QQ截圖20170509132409.png

分析:在這個(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é)過的子句。

QQ截圖20170509132509.png

QQ截圖20170509132517.png

【相關(guān)推薦】

  1. mysql數(shù)據(jù)分組:創(chuàng)建分組

  2. mysql數(shù)據(jù)分組:過濾分組

以上就是mysql數(shù)據(jù)分組和排序及SELECT子句順序的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。