Select*fromStudent;+------+---------+------ ---+ -----------+|Id |Nama |Alamat|Subjek |+------+---------+------- --+- ---------+|1&a"/> Select*fromStudent;+------+---------+------ ---+ -----------+|Id |Nama |Alamat|Subjek |+------+---------+------- --+- ---------+|1&a">

Rumah  >  Artikel  >  pangkalan data  >  Mengapa kita tidak boleh menggunakan fungsi kumpulan pada medan bukan berkumpulan tanpa klausa GROUP BY dalam pertanyaan MySQL SELECT?

Mengapa kita tidak boleh menggunakan fungsi kumpulan pada medan bukan berkumpulan tanpa klausa GROUP BY dalam pertanyaan MySQL SELECT?

PHPz
PHPzke hadapan
2023-08-28 22:01:05725semak imbas

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

Ini kerana tanpa klausa GROUP BY, output yang dikembalikan oleh MySQL boleh mengelirukan. Kami memberikan contoh berikut dalam jadual 'Pelajar' yang diberikan di bawah untuk tujuan demonstrasi -

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)

Daripada hasil pertanyaan di atas, kami dapat melihat bahawa ia mengembalikan output fungsi kumpulan COUNT(*) sebagai jumlah bilangan baris dalam table , tetapi nilai "Gaurav" dalam medan "Nama" mengelirukan kerana atas dasar apa kita melakukan ini, sama ada nilai pertama lajur atau ia disimpan dalam lajur beberapa kali dan MySQL mengembalikannya.

Sekarang, jika kita menulis pertanyaan ini menggunakan klausa GROUP BY, set hasil kelihatan seperti berikut -

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)

Seperti yang dapat dilihat daripada set hasil di atas, dengan bantuan klausa GROUP BY, kita mendapat output yang bermakna.

Atas ialah kandungan terperinci Mengapa kita tidak boleh menggunakan fungsi kumpulan pada medan bukan berkumpulan tanpa klausa GROUP BY dalam pertanyaan MySQL SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Cabaran NoSQLArtikel seterusnya:Cabaran NoSQL