這是因為如果沒有 GROUP BY 子句,MySQL 返回的輸出可能會產生誤導。我們在下面給出的“學生”表中給出以下示例,以進行演示 –
mysql> Select * from Student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+---------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | | 15 | Harshit | Delhi | Commerce | | 20 | Gaurav | Jaipur | Computers | +------+---------+---------+-----------+ 4 rows in set (0.00 sec) mysql> Select count(*), Name from Student; +----------+--------+ | count(*) | name | +----------+--------+ | 4 | Gaurav | +----------+--------+ 1 row in set (0.00 sec)
登錄后復制
從上面的查詢結果中我們可以觀察到,它返回組函數 COUNT(*) 的輸出作為表中的總行數,但字段“Name”中的值“Gaurav”具有誤導性,因為我們這樣做根據什么基礎,要么它是列的第一個值,要么它多次存儲在列中,MySQL 返回它。
現在,如果我們使用 GROUP BY 子句編寫此查詢,則結果集如下如下 –
mysql> Select count(*), name from student GROUP BY id; +----------+---------+ | count(*) | name | +----------+---------+ | 1 | Gaurav | | 1 | Aarav | | 1 | Harshit | | 1 | Gaurav | +----------+---------+ 4 rows in set (0.00 sec)
登錄后復制
從上面的結果集中可以看出,在 GROUP BY 子句的幫助下,我們得到了有意義的輸出。
以上就是為什么我們不應該在 MySQL SELECT 查詢中使用沒有 GROUP BY 子句的非分組字段的分組函數?的詳細內容,更多請關注www.92cms.cn其它相關文章!