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'—WHERE vs. HAVING: Bilakah Saya Perlu Menggunakan Yang Mana?

Barbara Streisand
Barbara Streisandasal
2025-01-11 22:42:41844semak imbas

MySQL Error:

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!

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