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

PHPz
Lepaskan: 2023-08-28 22:01:05
ke hadapan
759 orang telah melayarinya

为什么我们不应该在 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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan