Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL Mengendalikan Lajur Bukan Agregat dalam GROUP BY Queries?
Pendekatan Unik MySQL untuk KUMPULAN OLEH Pertanyaan tanpa Agregat
Tidak seperti sistem pangkalan data seperti Oracle dan SQL Server, MySQL membenarkan GROUP BY
klausa tanpa mengiringi fungsi agregat. Ini berbeza dengan ketara dengan tingkah laku SQL standard, di mana pertanyaan sedemikian biasanya akan mengakibatkan ralat. Soalan utamanya ialah: bagaimanakah MySQL mengendalikan lajur tidak teragregat dalam set hasil?
MySQL memilih nilai arbitrari daripada lajur bukan agregat untuk setiap kumpulan. Nilai ini selalunya, tetapi tidak selalu, nilai pertama ditemui dalam kumpulan itu. Rasional di sebalik tingkah laku ini berpunca daripada andaian bahawa jika lajur tidak diagregatkan atau sebahagian daripada kumpulan, kemasukannya dalam senarai SELECT
berpotensi sewenang-wenangnya. Oleh itu, MySQL hanya mengembalikan nilai perwakilan.
Pematuhan ANSI dan only_full_group_by
Tetapan
Pendekatan santai untuk GROUP BY
ini menyimpang daripada piawaian ANSI SQL. MySQL menangani perkara ini dengan menyediakan only_full_group_by
mod SQL. Mendayakan mod ini menguatkuasakan pematuhan ANSI SQL yang ketat, memerlukan semua lajur tidak teragregat disertakan dalam klausa GROUP BY
. Ini memastikan hasil pertanyaan yang boleh diramal dan mematuhi standard.
Mengapa MySQL Memilih Pendekatan ini
Keputusan untuk membenarkan pertanyaan GROUP BY
tidak teragregat dalam MySQL mengutamakan prestasi dan kemudahan penggunaan. Seperti yang didokumenkan dalam manual MySQL 5.0, reka bentuk ini memudahkan pemprosesan pertanyaan, mengurangkan overhed pengiraan dan menyediakan pengalaman pengguna yang lebih mudah. Ia membolehkan pengambilan data yang cekap tanpa kerumitan operasi agregat yang jelas.
Atas ialah kandungan terperinci Bagaimanakah MySQL Mengendalikan Lajur Bukan Agregat dalam GROUP BY Queries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!