Menyelesaikan Ralat MySQL 1111: Penggunaan Fungsi Kumpulan Tidak Sah
Apabila menggunakan MySQL, anda mungkin menghadapi ralat "Ralat 1111 (HY000): Penggunaan fungsi kumpulan tidak sah" apabila cuba mengagregat data menggunakan fungsi kumpulan seperti COUNT(*) sambil mengumpulkan secara serentak mengikut lajur.
Untuk menyelesaikan ralat ini, elakkan menggunakan fungsi kumpulan dalam klausa SELECT apabila melakukan KUMPULAN MENGIKUT operasi. Sebaliknya, gunakan subkueri atau klausa ORDER BY untuk mendapatkan nilai maksimum yang diingini.
Pertimbangkan contoh berikut:
<code class="mysql">SELECT name, MAX(COUNT(*)) AS max_count FROM table GROUP BY name;</code>
Pertanyaan ini akan mengembalikan ralat kerana COUNT() sedang digunakan dalam klausa SELECT sambil juga mengumpulkan mengikut nama. Untuk membetulkannya, alih keluar COUNT() daripada klausa SELECT dan gunakannya sebagai subkueri dalam fungsi MAX:
<code class="mysql">SELECT MAX((SELECT COUNT(*) FROM table WHERE name = t.name)) AS max_count FROM table t GROUP BY name;</code>
Selepas menjalankan pertanyaan ini, anda akan mendapat kiraan maksimum rekod untuk setiap nama dalam jadual. Sebagai alternatif, anda boleh menggunakan klausa ORDER BY untuk memesan keputusan mengikut kiraan dan kemudian ambil hanya rekod pertama:
<code class="mysql">SELECT name, COUNT(*) AS count FROM table GROUP BY name ORDER BY count DESC LIMIT 1;</code>
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat MySQL 1111: Penggunaan Fungsi Kumpulan Tidak Sah Apabila Menghimpunkan Mengikut Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!