Heim >Datenbank >MySQL-Tutorial >Wie behebt man den Fehler „Spalte ist in der Auswahlliste ungültig' in SQL-GROUP-BY-Abfragen?

Wie behebt man den Fehler „Spalte ist in der Auswahlliste ungültig' in SQL-GROUP-BY-Abfragen?

Susan Sarandon
Susan SarandonOriginal
2025-01-23 01:11:10166Durchsuche

How to Fix the

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!

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