Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL die Meldung „Ungültige Verwendung der Gruppenfunktion' aus und wie lässt sich das Problem mit HAVING beheben?

Warum gibt MySQL die Meldung „Ungültige Verwendung der Gruppenfunktion' aus und wie lässt sich das Problem mit HAVING beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-11 22:31:44835Durchsuche

Why MySQL Throws "Invalid use of group function"

MySQL-Fehler: „Ungültige Verwendung der Gruppenfunktion“ Ursachen und Lösungen

In der angegebenen MySQL-Abfrage ist der Fehler „Ungültige Verwendung der Gruppenfunktion“ auf die Verwendung der COUNT-Funktion in der WHERE-Klausel zurückzuführen. Die WHERE-Klausel filtert Zeilen vor der Gruppierung, was zu einem Fehler führt.

Verwenden Sie die HAVING-Klausel, um das Problem zu lösen

Um dieses Problem zu beheben, ersetzen Sie die WHERE-Klausel durch eine HAVING-Klausel. Die HAVING-Klausel filtert Gruppen nach der Gruppierung. In diesem Beispiel sollte die HAVING-Klausel die Anzahl der Lieferanten-ID (sid) überprüfen, um sicherzustellen, dass sie größer oder gleich 2 ist.

Das Folgende ist die korrigierte Unterabfrage:

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

Abfrage mit HAVING-Klausel abschließen

Mit der aktualisierten Unterabfrage wird die vollständige Abfrage zu:

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

Diese Abfrage gibt die PIDs von Teilen zurück, die von mindestens zwei verschiedenen Lieferanten geliefert wurden.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL die Meldung „Ungültige Verwendung der Gruppenfunktion' aus und wie lässt sich das Problem mit HAVING beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn