Rumah > Artikel > pangkalan data > Mengapa Fungsi Agregat MySQL Boleh Digunakan Tanpa Klausa GROUP BY?
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;
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!