Heim >Datenbank >MySQL-Tutorial >Warum erzeugt meine SQL-Abfrage den Fehler „Spalte nicht in Aggregate- oder Group-by-Klausel'?
Fehlerbehebung „Spalte nicht in Aggregate- oder Group-By-Klausel“ SQL-Fehler
Diese Anleitung behebt den häufigen SQL-Fehler: „Spalte ‚Employee.EmpID‘ ist in der Auswahlliste ungültig, da sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist.“ Dieser Fehler tritt auf, wenn Ihre SELECT-Anweisung eine Spalte enthält, die weder aggregiert noch Teil der GROUP BY-Klausel ist.
Aggregatfunktionen und GROUP BY verstehen
Eine GROUP BY
-Klausel gruppiert Zeilen mit identischen Werten in angegebenen Spalten. Um Daten aus diesen Gruppen anzuzeigen, verwenden Sie normalerweise Aggregatfunktionen wie SUM
, COUNT
, AVG
, MIN
oder MAX
. Diese Funktionen berechnen zusammenfassende Werte für jede Gruppe.
Die Einwertregel
Die Einzelwertregel von SQL schreibt vor, dass jede nicht aggregierte Spalte in der SELECT-Liste einen einzelnen, konsistenten Wert innerhalb jeder Gruppe haben muss. Wenn eine nicht aggregierte Spalte mehrere Werte pro Gruppe enthält, ist die Abfrage mehrdeutig, da SQL nicht bestimmen kann, welcher Wert zurückgegeben werden soll.
Fehler beheben
Angenommen, Ihr Ziel besteht darin, Standort-IDs und die Mitarbeiterzahl an jedem Standort aufzulisten. Die korrigierte Abfrage verwendet die COUNT
Aggregatfunktion:
<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID;</code>
COUNT(emp.EmpID)
berechnet die Anzahl der Mitarbeiter für jeden LocationID
. Dadurch wird ein einzelner EmployeeCount
-Wert pro Gruppe sichergestellt, wodurch die Einwertregel erfüllt und der Fehler beseitigt wird. Die GROUP BY loc.LocationID
-Klausel gruppiert die Ergebnisse nach Standort.
Das obige ist der detaillierte Inhalt vonWarum erzeugt meine SQL-Abfrage den Fehler „Spalte nicht in Aggregate- oder Group-by-Klausel'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!