首頁 > 資料庫 > mysql教程 > 為什麼我們不應該在 MySQL SELECT 查詢中使用沒有 GROUP BY 子句的非分組欄位的分組函數?

為什麼我們不應該在 MySQL SELECT 查詢中使用沒有 GROUP BY 子句的非分組欄位的分組函數?

PHPz
發布: 2023-08-28 22:01:05
轉載
784 人瀏覽過

为什么我们不应该在 MySQL SELECT 查询中使用没有 GROUP BY 子句的非分组字段的分组函数?

這是因為如果沒有 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 子句的非分組欄位的分組函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板