Heim >Datenbank >MySQL-Tutorial >Wie behebt man den Fehler „Spalte ist in der Auswahlliste ungültig' in SQL-GROUP-BY-Abfragen?
Behebung des Fehlers „Spalte ist in der Auswahlliste ungültig“ in SQL GROUP BY-Klauseln
Datenbankabfragen mit GROUP BY
erfordern eine sorgfältige Prüfung der SELECT
-Liste. Alle ausgewählten Spalten müssen entweder aggregiert (mithilfe von Funktionen wie COUNT
, SUM
, MIN
, MAX
usw.) oder explizit in der GROUP BY
-Klausel enthalten sein. Die Nichtbeachtung dieser Regel führt zum Fehler „Spalte 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 eine SELECT
-Liste eine Spalte enthält, die weder aggregiert noch Teil der GROUP BY
-Gruppierung ist.
Die Lösung besteht darin, entweder die SELECT
-Liste oder die GROUP BY
-Klausel anzupassen.
Beispiel und Lösungen:
Lassen Sie uns diese problematische Abfrage untersuchen:
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID</code>
Der Fehler tritt auf, weil emp.EmpID
weder aggregiert noch in der GROUP BY
-Klausel enthalten ist. Hier sind zwei Möglichkeiten, das Problem zu beheben:
Lösung 1: Aggregieren Sie die nicht gruppierte Spalte
<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>
Diese überarbeitete Abfrage zählt die Mitarbeiter (COUNT(emp.EmpID)
) an jedem Standort.
Lösung 2: Fügen Sie die Spalte zur GROUP BY-Klausel hinzu
<code class="language-sql">SELECT loc.LocationID, emp.EmpID FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID GROUP BY loc.LocationID, emp.EmpID</code>
Dadurch werden die Ergebnisse nach LocationID
und EmpID
gruppiert. Beachten Sie, dass dadurch doppelte LocationID
-Einträge mit unterschiedlichen EmpID
-Werten entfernt werden. Das Ergebnis zeigt den Standort jedes Mitarbeiters einzeln an.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Spalte ist in der Auswahlliste ungültig' in SQL-GROUP-BY-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!