共計 1239 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
丸趣 TV 小編給大家分享一下 mysql 中 group by 如何使用,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
mysql 中 group by 的用法是配合聚合函數,利用分組信息進行統計,語句如“select name,sum(id) from test group by name,number”。
先來看下表 1,表名為 test:
執行如下 SQL 語句:
SELECT name FROM test GROUP BY name
你應該很容易知道運行的結果,沒錯,就是下表 2:
可是為了能夠更好的理解“group by”多個列“和”聚合函數“的應用,我建議在思考的過程中,由表 1 到表 2 的過程中,增加一個虛構的中間表:虛擬表 3。下面說說如何來思考上面 SQL 語句執行情況:
1.FROM test:該句執行后,應該結果和表 1 一樣,就是原來的表。
2.FROM test Group BY name:該句執行后,我們想象生成了虛擬表 3,如下所圖所示,生成過程是這樣的:group by name,那么找 name 那一列,具有相同 name 值的行,合并成一行,如對于 name 值為 aa 的,那么 1 aa 2 與 2 aa 3 兩行合并成 1 行,所有的 id 值和 number 值寫到一個單元格里面,如下圖所示
3. 接下來就要針對虛擬表 3 執行 Select 語句了:
(1)如果執行 select * 的話,那么返回的結果應該是虛擬表 3,可是 id 和 number 中有的單元格里面的內容是多個值的,那么 id 跟 number 會返回各自單元格中的排序第一個值。id 列會返回 1,3,5
(2)我們再看 name 列,每個單元格只有一個數據,所以我們 select name 的話,就沒有問題了。為什么 name 列每個單元格只有一個值呢,因為我們就是用 name 列來 group by 的。
(3)那么對于 id 和 number 里面的單元格有多個數據的情況怎么辦呢?答案就是用聚合函數,聚合函數就用來輸入多個數據,輸出一個數據的。如 count(id),sum(number),而每個聚合函數的輸入就是每一個多數據的單元格。
(4)例如我們執行 select name,sum(number) from test group by name,那么 sum 就對虛擬表 3 的 number 列的每個單元格進行 sum 操作,例如對 name 為 aa 的那一行的 number 列執行 sum 操作,即 2 +3,返回 5,最后執行結果如下:
5)group by 多個字段該怎么理解呢:如 group by name,number,我們可以把 name 和 number 看成一個整體字段,以他們整體來進行分組,如下圖所示:
6)接下來就可以配合 select 和聚合函數進行操作了。如執行 select name,sum(id) from test group by name,number,結果如下圖:
看完了這篇文章,相信你對 mysql 中 group by 如何使用有了一定的了解,想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!
向 AI 問一下細節丸趣 TV 網 – 提供最優質的資源集合!