Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich den MySQL-Fehler 1111: Ungültige Verwendung der Gruppenfunktion?

Warum erhalte ich den MySQL-Fehler 1111: Ungültige Verwendung der Gruppenfunktion?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 10:42:16515Durchsuche

Why Am I Getting MySQL Error 1111: Invalid Use of Group Function?

Der verblüffende Fehler 1111: Ungültige Verwendung der Gruppenfunktion

Dieses Problem tritt auf, wenn versucht wird, eine Aggregatfunktion wie AVG zu verwenden die WHERE-Klausel, was zum rätselhaften Fehler 1111 führt (HY000) eine HAVING-Klausel oder eine Auswahlliste. Darüber hinaus muss auf die Spalte, die der Aggregationsoperation unterzogen wird, von einem äußeren Kontext aus verwiesen werden.

Beheben des Fehlers mit der WHERE-Klausel

Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, Folgendes zu verwenden: eine Unterabfrage innerhalb der WHERE-Klausel, wie unten beispielhaft dargestellt:

In diesem Fall wird das Durchschnittsgehalt anhand der berechnet Unterabfrage und dann mit dem Gehalt jedes Einzelnen verglichen.

Beheben des Fehlers mit der HAVING-Klausel

select *
from staff
where salary > (select avg(salary) from staff)

Alternativ kann die HAVING-Klausel genutzt werden, um eine Suchbedingung für eine Gruppe festzulegen oder Aggregat, wie hier dargestellt:

Die HAVING-Klausel gibt an, dass nur Gruppen mit mehr als zwei Mitgliedern vorhanden sein werden als Ergebnis zurückgegeben.

Zusätzlicher Kommentar zur HAVING-Klausel

select deptid,COUNT(*) as TotalCount
from staff
group by deptid
having count(*) > 2

Es ist erwähnenswert, dass die HAVING-Klausel normalerweise in Verbindung mit der GROUP BY-Klausel verwendet wird. Wenn jedoch GROUP BY fehlt, verhält sich HAVING ähnlich wie eine WHERE-Klausel.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler 1111: Ungültige Verwendung der Gruppenfunktion?. 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