Heim > Datenbank > MySQL-Tutorial > Warum löst meine SQL-Abfrage den Fehler „Spalte ist in der Auswahlliste ungültig' im Zusammenhang mit GROUP BY aus?

Warum löst meine SQL-Abfrage den Fehler „Spalte ist in der Auswahlliste ungültig' im Zusammenhang mit GROUP BY aus?

Barbara Streisand
Freigeben: 2025-01-23 01:21:10
Original
344 Leute haben es durchsucht

Why Does My SQL Query Throw a

SQL-Abfragefehler: Spalte ist in der SELECT-Liste ungültig, da sie nicht einer Aggregatfunktion oder GROUP BY-Klausel entspricht

Beim Ausführen einer SQL-Abfrage kann der folgende Fehler auftreten:

<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>
Nach dem Login kopieren

Der Grund für diesen Fehler ist wie folgt:

Datengruppierung

In der Klausel GROUP BY werden Zeilen mit demselben Spaltenwert für die Gruppierung angegeben. Zum Beispiel in der folgenden Abfrage:

<code>SELECT loc.LocationID, emp.EmpID
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>
Nach dem Login kopieren

Mitarbeiter werden nach ihrer Standort-ID gruppiert. Wenn Sie jedoch versuchen, eine Spalte in die SELECT-Liste aufzunehmen, die nicht in der GROUP BY-Klausel enthalten ist (z. B. emp.EmpID), erhalten Sie diese Fehlermeldung, da nicht ermittelt werden kann, welche EmpID sein soll für jeden Gruppenwert ausgewählt.

Aggregationsfunktion

Aggregationsfunktionen wie SUM, COUNT, MAX und MIN) können verwendet werden, um zusammenfassende Informationen für gruppierte Daten zu erhalten . Wenn Sie eine nicht aggregierte Spalte in die SELECT-Liste aufnehmen, diese jedoch nicht Teil einer GROUP BY-Klausel ist, müssen Sie eine Aggregatfunktion darauf verwenden.

Wenn Sie beispielsweise die Anzahl der Mitarbeiter pro Standort berechnen möchten, würden Sie Folgendes verwenden:

<code>SELECT loc.LocationID, COUNT(emp.EmpID)
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>
Nach dem Login kopieren

Dadurch wird sichergestellt, dass für jeden Standort nur die Anzahl der Mitarbeiter zurückgegeben wird und nicht eine Liste der einzelnen Mitarbeiter-IDs.

Lösung

Um diesen Fehler zu beheben, müssen Sie:

  • Spalten zur GROUP BY-Klausel hinzufügen: Dadurch werden die Daten auch basierend auf den zusätzlichen Spalten gruppiert.
  • Verwenden Sie eine Aggregatfunktion für die Spalten in der SELECT-Liste: Dadurch werden zusammenfassende Informationen für jede Gruppe basierend auf der nicht aggregierten Spalte berechnet.

Das obige ist der detaillierte Inhalt vonWarum löst meine SQL-Abfrage den Fehler „Spalte ist in der Auswahlliste ungültig' im Zusammenhang mit GROUP BY aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage