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!