Mengapa Fungsi Agregat MySQL Boleh Digunakan Tanpa Klausa GROUP BY?

DDD
Lepaskan: 2024-11-05 19:45:02
asal
602 orang telah melayarinya

Why Can MySQL Aggregate Functions Be Used Without a GROUP BY Clause?

Fungsi Agregat MySQL: GROUP BY Quandary

Dalam MySQL, fungsi agregat boleh digunakan dalam pernyataan SELECT tanpa mentakrifkan GROUP BY secara eksplisit klausa, manakala sistem pangkalan data lain seperti SQL Server mungkin menimbulkan ralat. Tingkah laku ini menimbulkan persoalan tentang mengapa MySQL membenarkan pertanyaan sedemikian untuk dilaksanakan.

Reka Bentuk MySQL

MySQL membenarkan fungsi agregat dalam senarai SELECT tanpa klausa GROUP BY sebagai sambungan kepada standard SQL. Tanpa pengumpulan, pangkalan data menganggap satu kumpulan tak tentu, dan sebarang nilai nama boleh dipilih untuk kumpulan itu. Tingkah laku ini membolehkan pengagregatan data yang lebih mudah merentas seluruh jadual.

Contoh Pertanyaan

Pertimbangkan pertanyaan:

SELECT name, MAX(age) FROM t;
Salin selepas log masuk

Tanpa KUMPULAN OLEH klausa, MySQL mengembalikan satu baris dengan nilai nama pertama yang ditemui dan nilai umur maksimum daripada keseluruhan jadual.

ONLY_FULL_GROUP_BY Setting

MySQL versi 5.7.5 dan lebih baru memperkenalkan tetapan ONLY_FULL_GROUP_BY, yang mengawal pengendalian fungsi agregat tanpa klausa GROUP BY. Mendayakan tetapan ini memerlukan kehadiran klausa GROUP BY untuk sebarang penggunaan fungsi agregat.

Kesimpulan

Gelagat MySQL yang membenarkan fungsi agregat tanpa klausa GROUP BY memberikan fleksibiliti untuk mengagregat data merentas keseluruhan jadual. Walau bagaimanapun, tetapan ONLY_FULL_GROUP_BY boleh menguatkuasakan pematuhan yang lebih ketat kepada standard SQL untuk pengagregatan yang lebih terkawal.

Atas ialah kandungan terperinci Mengapa Fungsi Agregat MySQL Boleh Digunakan Tanpa Klausa GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!