Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Membuang 'Penggunaan fungsi kumpulan tidak sah' dan Bagaimana Membetulkannya Menggunakan HAVING?

Mengapa MySQL Membuang 'Penggunaan fungsi kumpulan tidak sah' dan Bagaimana Membetulkannya Menggunakan HAVING?

Mary-Kate Olsen
Lepaskan: 2025-01-11 22:31:44
asal
829 orang telah melayarinya

Why MySQL Throws "Invalid use of group function"

Ralat MySQL: "Penggunaan fungsi kumpulan tidak sah" punca dan penyelesaian

Dalam pertanyaan MySQL yang diberikan, ralat "Penggunaan fungsi kumpulan tidak sah" disebabkan oleh penggunaan fungsi COUNT dalam klausa WHERE. Klausa WHERE menapis baris sebelum mengumpulkan, menyebabkan ralat.

Gunakan klausa HAVING untuk menyelesaikan masalah

Untuk menyelesaikan isu ini, gantikan klausa WHERE dengan klausa HAVING. Klausa HAVING menapis kumpulan selepas kumpulan. Dalam contoh ini, klausa HAVING harus menyemak kiraan ID pembekal (sid) untuk memastikan ia lebih besar daripada atau sama dengan 2.

Berikut ialah subkueri yang diperbetulkan:

<code class="language-sql">(
    SELECT c2.pid
    FROM Catalog AS c2
    WHERE c2.pid = c1.pid
    HAVING COUNT(c2.sid) >= 2
)</code>
Salin selepas log masuk

Lengkapkan pertanyaan dengan klausa HAVING

Menggunakan subkueri yang dikemas kini, pertanyaan lengkap menjadi:

<code class="language-sql">SELECT c1.pid                      -- 选择 pid
FROM Catalog AS c1                 -- 来自 Catalog 表
WHERE c1.pid IN (SELECT c2.pid   -- 其中 pid 在以下集合中:
    FROM Catalog AS c2             -- pids
    WHERE c2.pid = c1.pid
    HAVING COUNT(c2.sid) >= 2     -- 至少有两个对应的 sids
);</code>
Salin selepas log masuk

Pertanyaan ini akan mengembalikan pid bahagian yang dibekalkan oleh sekurang-kurangnya dua pembekal berbeza.

Atas ialah kandungan terperinci Mengapa MySQL Membuang 'Penggunaan fungsi kumpulan tidak sah' dan Bagaimana Membetulkannya Menggunakan HAVING?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan