Rumah >pangkalan data >tutorial mysql >Ralat MySQL: 'Penggunaan fungsi kumpulan tidak sah'—WHERE vs. HAVING: Bilakah Saya Perlu Menggunakan Yang Mana?
Ralat MySQL: Penggunaan fungsi kumpulan tidak sah
Apabila anda menghadapi ralat "Penggunaan fungsi kumpulan tidak sah" semasa menggunakan MySQL, pastikan anda memahami perbezaan antara klausa WHERE dan HAVING.
Dalam pertanyaan yang disediakan, matlamatnya adalah untuk mencari bahagian yang dibekalkan oleh sekurang-kurangnya dua pembekal. Pada mulanya, anda cuba menggunakan klausa WHERE untuk membandingkan setiap pid dengan output subkueri yang mengira sid. Walau bagaimanapun, MySQL melakukan WHERE sebelum pengagregatan, menjadikan pendekatan ini tidak berkesan.
Penyelesaian yang betul ialah menggunakan klausa HAVING. HAVING menapis hasil fungsi agregat seperti COUNT(), membolehkan anda melakukan pengiraan selepas pengagregatan. Dengan menulis semula subkueri menggunakan HAVING, seperti yang ditunjukkan dalam jawapan:
<code class="language-sql">( SELECT c2.pid FROM Catalog AS c2 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2 )</code>
Anda boleh mendapatkan hasil yang anda inginkan. Klausa HAVING akan memastikan bahawa hanya bahagian dengan sekurang-kurangnya dua pembekal dimasukkan ke dalam output akhir.
Atas ialah kandungan terperinci Ralat MySQL: 'Penggunaan fungsi kumpulan tidak sah'—WHERE vs. HAVING: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!