Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Ralat MySQL 1111: Penggunaan Fungsi Kumpulan Tidak Sah Apabila Menghimpunkan Mengikut Lajur?

Bagaimana untuk Membetulkan Ralat MySQL 1111: Penggunaan Fungsi Kumpulan Tidak Sah Apabila Menghimpunkan Mengikut Lajur?

DDD
DDDasal
2024-10-24 12:15:01808semak imbas

How to Fix MySQL Error 1111: Invalid Use of Group Function When Grouping By a Column?

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!

Kenyataan:
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