Apabila menghadapi ralat "tidak dalam GROUP BY" dalam MySQL, ia menunjukkan bahawa anda mempunyai percanggahan antara lajur yang dipilih dalam klausa SELECT dan yang disertakan dalam GROUP BY klausa.
Dalam contoh yang diberikan, pertanyaan pertama (PILIH kiraan(nama DISTINCT)) dikumpulkan dengan betul mengikut satu lajur (nama), manakala pertanyaan kedua (PILIH nama , jenis, bahasa, kod`) cuba mendapatkan lebih banyak lajur daripada yang disertakan dalam GROUP BY` klausa.
Untuk menyelesaikan ralat ini, adalah penting untuk memastikan "kumpulan penuh mengikut", di mana semua lajur yang dipilih juga mesti menjadi sebahagian daripada klausa KUMPULAN OLEH. Ini memastikan bahawa hasilnya mewakili ringkasan yang betul untuk setiap kumpulan.
Untuk pertanyaan yang diberikan, sintaks yang betul ialah:
SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name`, `type`, `language`, `code` ORDER BY `count` DESC LIMIT 0, 25
SQL92 memerlukan semua lajur dalam klausa SELECT menjadi sebahagian daripada klausa GROUP BY. SQL99 melonggarkan sedikit sekatan ini, membenarkan lajur yang berfungsi bergantung pada klausa GROUP BY.
Gelagat lalai MySQL membenarkan "kumpulan separa oleh," yang bermaksud lajur yang tidak termasuk dalam klausa GROUP BY boleh dipilih, tetapi ini boleh menghasilkan keputusan yang tidak pasti. Untuk mengelakkan ini, anda boleh menetapkan pembolehubah @@sql_mode kepada 'ONLY_FULL_GROUP_BY'. Ini akan memaksa MySQL untuk mematuhi kumpulan penuh mengikut keperluan.
Atas ialah kandungan terperinci MySQL 'tiada dalam GROUP BY' Ralat: Bagaimana untuk Membetulkan Kumpulan Penuh Mengikut Isu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!